From 08ae03b9524af170891123c8554ac1f3ff9e94b8 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 14 Aug 2024 08:03:20 -0700 Subject: [PATCH 01/51] Add a skeleton updated README/Overview No actual content just yet, just placeholders for future content. --- README.md | 14 +++++++++++++ proposals/128-bit-arithmetic/Overview.md | 25 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 proposals/128-bit-arithmetic/Overview.md diff --git a/README.md b/README.md index 21660b8d6a..bf5f809e3e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ +# 128-bit arithemtic proposal for WebAssembly. + +This repository is a clone of +[`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for +discussion, prototype specification, and implementation of a proposal to add +support for 128-bit arithmetic instructions for WebAssembly. + +* See the [overview](./proposals/128-bit-arithmetic/Overview.md) for a + high-level summary and rationale of the proposal. + +Original README from upstream repository follows... + +-------------------------------------------------------------------------------- + [![CI for specs](https://github.com/WebAssembly/spec/actions/workflows/ci-spec.yml/badge.svg)](https://github.com/WebAssembly/spec/actions/workflows/ci-spec.yml) [![CI for interpreter & tests](https://github.com/WebAssembly/spec/actions/workflows/ci-interpreter.yml/badge.svg)](https://github.com/WebAssembly/spec/actions/workflows/ci-interpreter.yml) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md new file mode 100644 index 0000000000..7e1e9c7415 --- /dev/null +++ b/proposals/128-bit-arithmetic/Overview.md @@ -0,0 +1,25 @@ +# 128-bit arithmetic + +## Motivation + +... TODO ... + +## Proposal + +... TODO ... + +## Example + +... TODO ... + +## Spec Changes + +... TODO ... + +## Implementation Status + +... TODO ... + +## Alternatives + +... TODO ... From 607364af5dab41f743a9492b8c2c617bd60c1880 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 14 Aug 2024 12:25:52 -0700 Subject: [PATCH 02/51] Fill out an initial Overview.md This is mostly a transcription of the presentation we made to the CG this week. I've also taken the time to flesh out a description of the current state of WebAssembly at least relative to Wasmtime with some links and words. --- proposals/128-bit-arithmetic/Overview.md | 277 ++++++++++++++++++++++- 1 file changed, 273 insertions(+), 4 deletions(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 7e1e9c7415..84c9928255 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -2,19 +2,221 @@ ## Motivation -... TODO ... +There are a number of use cases for 128-bit numbers and arithmetic in source +languages today such as: + +* Aribtrary precision math - many languages have a bignum-style library which is + an arbitrary precision integer. For example libgmp in C, numbers Python, + `BigInt` in JS, etc. Big integers have a range of specific applications as + well which can include being integral portions of cryptographic algorithms. + +* Checking for overflow - some programs may want to check for overflow when + performing arithmetic operations, such as seeing if a 64-bit addition + overflowed. Using 128-bit arithmetic can be done to detect these sorts of + situations. + +* Niche bit tricks - some PRNGs use 128-bit integer state for efficient storage + and calculation of the next state. Using 128-bit integers has also been done + for hash table indexing as well. + +Today, however, these use cases of 128-bit integers are significantly slower in +WebAssembly then they are on native platforms. The performance gap can range +from 2-7x slower than native at this time. + +The goal of this proposal is to close this performance gap between native and +WebAssembly by adding new instructions which enable more efficient lowerings of +128-bit arithmetic operations. + +### WebAssembly today with 128-bit arithmetic + +[This is an example](https://godbolt.org/z/fMdjqvEaq) of what LLVM emits today +for 128-bit operations in source languages. Notably: + +* `i64.add128` - expands to three `add` instructions plus comparisons. +* `i64.sub128` - same as `i64.add`, but with `sub` instructions. +* `i64.mul128` - this notably uses the `__multi3` libcall which is significantly + slower than performing the operation inline. + +For the same code [this is what native platforms +emit](https://godbolt.org/z/65d45ff5K). Notably: + +* x86\_64 - addition/subtraction use `adc` and `sbb` to tightly couple the two + additions/subtractions together and avoid moving the flags register into a + general purpose register. Multiplication uses the native `mul` instruction + which produces a 128-bit result which is much more efficient than the + implementation of `__multi3`. +* aarch64 - addition/subtraction also use `adc` and `sbc` like x86\_64. + Multiplication uses `umulh` to generate the upper bits of a multiplication and + can efficiently use `madd` as well. This is a much more compact sequence than + `__multi3`. +* riscv64 - this architecture notably does not have overflow flags and the + generated code looks quite similar to the WebAssembly. Multiplication, + however, has access to `mulhu` which WebAssembly does not easily provide. + +For a comparison [this is the generated output of +Wasmtime](https://godbolt.org/z/46dcajxWa) for add/sub given the WebAssembly +that LLVM emits today (edited to produce a multivalue result instead of storing +it into memory). Notably: + +* x86\_64 - addition/subtraction is not pattern matching to generate `adc` or + `sbc` meaning that a compare-and-set is required. +* aarch64 - same consequences as x86\_64. +* riscv64 - the generated code mostly matches native output modulo frame pointer + setup/teardown. On riscv64 it's expected that `i64.{add,sub}128` won't + provide much of a performance benefit over today. Multiplication however will + still be faster. + +Overall the main cause for slowdowns are: + +* On x86\_64 and aarch64 WebAssembly doesn't provide access to overflow flags + done by `add` and `adds` and thus it's difficult for compilers to + pattern-match and generate `adc` and `sbc`. +* On all platforms the `__multi3` libcall is significantly slower than native + instructions because the libcall itself can't use the native instructions and + the libcall's results are required to travel through memory (according to its + ABI). + +This proposal's native instructions for 128-bit operations should solve all of +these issues. ## Proposal -... TODO ... +This proposal currently adds three new instructions to WebAssembly: + +* `i64.add128` +* `i64.sub128` +* `i64.mul128` + +These instructions all have the type `[i64 i64 i64 i64] -> [i64 i64]` where the +values are: + +* i64 argument 0 - the low 64 bits of the left-hand-side argument +* i64 argument 1 - the high 64 bits of the left-hand-side argument +* i64 argument 2 - the low 64 bits of the right-hand-side argument +* i64 argument 3 - the high 64 bits of the right-hand-side argument +* i64 result 0 - the low 64 bits of the result +* i64 result 1 - the high 64 bits of the result + +Each 128-bit operand and result is split into a low/high pair of `i64` values. +The semantics of add/sub/mul are the same as their 64-bit equivalents except +that they work at the level of 128-bits instead of 64-bits. ## Example -... TODO ... + +An example of implementing +[`u64::overflowing_add`](https://doc.rust-lang.org/std/primitive.u64.html#method.overflowing_add) +in Rust in WebAssembly might look like: + +```wasm +(module + (func $"u64::overflowing_add" + (param i64 i64) (result i64 i64) + (i64.add128 + (local.get 0) (i64.const 0) ;; lo/hi of lhs + (local.get 1) (i64.const 0) ;; lo/hi of rhs + ) + ) +) +``` + +Here the two input values are zero-extended with constant 0 upper bits. The +overflow flag, the second result, is guaranteed to be either 0 or 1 depending +on whether overflow occurred. ## Spec Changes -... TODO ... +### Structure + +The definition for [numeric +instructions](https://webassembly.github.io/spec/core/syntax/instructions.html#numeric-instructions) +will be extended with: + +``` +instr ::= ... + | i64.{binop128} + +binop128 ::= add128 + | sub128 + | mul128 +``` + +### Validation + +Validation of [numeric +instructions](https://webassembly.github.io/spec/core/valid/instructions.html#numeric-instructions) +will be updated to contain: + +``` +i64.{binop128} + +* The instruction is valid with type [i64 i64 i64 i64] -> [i64 i64] + + + ---------------------------------------------------- + C ⊢ i64.{binop128} : [i64 i64 i64 i64] -> [i64 i64] + +``` + +### Execution + +Execution of [numeric +instructions](https://webassembly.github.io/spec/core/exec/instructions.html#numeric-instructions) +will be updated with: + +``` +i64.{binop128} + +* Assert: due to validation, four values of type i64 are on the top of the stack. +* Pop the value `i64.const c4` from the stack. +* Pop the value `i64.const c3` from the stack. +* Pop the value `i64.const c2` from the stack. +* Pop the value `i64.const c1` from the stack. +* Create 128-bit value `v1` by concatenating `c1` and `c2` where `c1` is the low + 64-bits and `c2` is the upper 64-bits. +* Create 128-bit value `v2` by concatenating `c3` and `c4` where `c3` is the low + 64-bits and `c4` is the upper 64-bits. +* Let `r` be the result of computing `{binop128}(v1, v2)` +* Let `r1` be the low 64-bits of `r` +* Let `r2` be the high 64-bits of `r` +* Push the value `i64.const r1` to the stack +* Push the value `i64.const r2` to the stack + + + (i64.const c1) (i64.const c2) (i64.const c3) (i64.const c4) i64.{binop128} + ↪ (i64.const r1) (i64.const r2) + (if r1:r2 = {binop128}(c1:c2, c3:c4)) +``` + +### Binary Format + +The binary format for [numeric +instructions](https://webassembly.github.io/spec/core/binary/instructions.html#numeric-instructions) +will be extended with: + +``` +instr ::= ... + | 0xFC 19:u32 ⇒ i64.add128 + | 0xFC 20:u32 ⇒ i64.sub128 + | 0xFC 21:u32 ⇒ i64.mul128 +``` + +> **Note**: opcodes 0-7 are `*.trunc_sat_*` instructions, 8-17 are bulk-memory +> and reference-types `{table,memory}.{copy,fill,init}`, `{elem,data}.drop`, and +> `table.grow`. Opcode 18 is proposed to be `memory.discord`. + +### Text Format + +The text format for [numeric +instructions](https://webassembly.github.io/spec/core/text/instructions.html#numeric-instructions) +will be extended with: + +``` +plaininstr_l ::= ... + | 'i64.add128' ⇒ i64.add128 + | 'i64.sub128' ⇒ i64.sub128 + | 'i64.mul128' ⇒ i64.mul128 +``` ## Implementation Status @@ -22,4 +224,71 @@ ## Alternatives +### Alternative: Overflow Flags + ... TODO ... + +### Alternative: Widening multiplication + +Instead of `i64.mul128` it would be sufficient to add instructions such as +`i64.mul_wide_{u,s}` which are typed as `[i64 i64] -> [i64 i64]` and are defined +as producing a 128-bit result by multiplying the two 64-bit provided values. +This corresponds to `mul` and `imul` on x86-64 and has [equivalents on other +platforms as well](https://godbolt.org/z/eojr3MdWz). This is a lower-level +primitive than `i64.mul128` and is well-supported across architectures. Given +the current shape of the proposal, however, it "feels cleaner" to have +`i64.mul128`. The `i64.mul_wide_u` instruction can be encoded as `i64.mul128` +with constant 0 values for the upper bits and `i64.mul_wide_s` can be encoded +similarly with a right-shift of the low bits. This means that `i64.mul128` +should be sufficient for expressing the use cases of `i64.mul_wide_{s,u}`. + +### Alternative: Why not add an `i128` type to WebAssembly? + +Frontends compiling to WebAssembly are currently required to lower +source-language-level `i128` types into two 64-bit halves. This is done by LLVM, +for example, when lowering its internal `i128` type to WebAssembly. Adding +`i128` to WebAssembly would make this translation lower and remove the need for +`i64.add128` for example by instead being `i128.add`. + +This alternative though is a major change to WebAssembly and can be a very large +increase in complexity for engines. Given the relatively niche use cases for +128-bit integers this is seen as an imbalance in responsibilities where a +relatively rarely used feature of 128-bit integers would require a significant +amount of investment in engines to support. + +Native ISAs also typically do not have a 128-bit integer type. This means that +most operations need to be emulated with 64-bit values anyway such as +bit-operations or loads/stores. Loads/stores of 128-bit values in WebAssembly +can raise questions of tearing in threaded settings in addition to +partially-out-of-bounds loads/stores as well. + +This leads to the conclusion to not add `i128` to WebAssembly and instead use +the other types already present in WebAssembly. + +### Alternative: Why not use `v128` as an operand type? + +WebAssembly already has a 128-bit value type of `v128` from the simd proposal. +Compilers typically keep this value in vector registers, however, such as +`%xmmN`. An operation like `i64.add128` would then have to move `%xmmN` into +general purpose registers, perform the operation, and then move it back to the +`%xmmN` register. This is hypothesized to pessimize performance. + +Alternatively compilers could keep track of whether the value is in and `%xmmN` +vector register or in a general purpose register, but this is seen as a +significant increase in complexity for code translators. + +Overall it seemed best to use `i64` operands instead of `v128` as it more +closely maps what native platforms do by operating on values in general-purpose +registers. + +### Alternative: Why not add `i64.div128_{u,s}`? + +Native ISAs generally do not have support for 128-bit division. The x86-64 ISA +has the ability to divide a 128-bit value by a 64-bit value producing a 64-bit +result, but this doesn't map to the desired semantics of `i64.div128_{u,s}` to +be equivalent to `i64.div_{u,s}` for example. + +LLVM additionally for native platforms [unconditionally lowers 128-bit +division](https://godbolt.org/z/4xbGvbxja) to a host libcall of the `__udivti3` +function. It's expected that a host-provided implementation of `__udivti3` is +unlikely to be significantly faster than `__udivti3`-compiled-to-WebAssembly. From 19b1a5532b4ca307bc47d921483650ea19243929 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 19 Aug 2024 08:58:47 -0700 Subject: [PATCH 03/51] Replace hard tabs with spaces in overview Hard tabs snuck in by accident. --- proposals/128-bit-arithmetic/Overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 84c9928255..aa7bee3ca5 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -134,11 +134,11 @@ will be extended with: ``` instr ::= ... - | i64.{binop128} + | i64.{binop128} binop128 ::= add128 - | sub128 - | mul128 + | sub128 + | mul128 ``` ### Validation From 22c0ebaaa37dfe6204dd1f6f7d2c97c5889c0255 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 20 Aug 2024 11:54:53 -0700 Subject: [PATCH 04/51] Fill out the alternatives section for overflow flags This commit fills out the overflow flags alternative in the `Overview.md` with some more analysis and discussion on the alternative relative to `i64.{add,sub}128` for 128-bit arithmetic. --- proposals/128-bit-arithmetic/Overview.md | 90 +++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index aa7bee3ca5..bb60dd024e 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -226,7 +226,95 @@ plaininstr_l ::= ... ### Alternative: Overflow Flags -... TODO ... +A major alternative to this proposal is to expose the lower-level primitives +that 128-bit addition/subtraction are themselves built on for the underlying +platforms. This hypothetically would remove the need for `i64.{add,sub}128`. The +basic idea is that platforms such as x86\_64 and aarch64 expose overflow flags +for arithmetic operations. These platforms additionally have instructions that +consume the overflow flag with an arithmetic operation as well. In WebAssembly +these might look like: + +* `i64.add_overflow_{u,s} : [i64 i64] -> [i64 i32]` +* `i64.add_with_carry_{u,s} : [i64 i64 i32] -> [i64 i32]` + +Both instructions would produce a 64-bit result plus an overflow flag, an `i32`. +The `i32` result would be defined as either 0 or 1 indicating whether an +overflow happened during the operation. The `*_add_with_carry_*` variant would +additionally take a third parameter which is an overflow flag from a previous +instruction. To match what hardware has this would need to be defined as either +0 or nonzero (note that this is subtly different from the result of +`*_add_overflow_*`). + +An example of using these instructions to implement 128-bit addition would be: + +```wasm +(module + (func $add128 (param i64 i64 i64 i64) (result i64 i64) + (local $oflow i32) + (i64.add_overflow_u (local.get 0) (local.get 2)) + local.set $oflow + (i64.add_with_carry_u (local.get 1) (local.get 3) (local.get $oflow)) + drop + ) +) +``` + +This is quite close to what x86\_64 would produce for an equivalent function for +example: + +``` +0000000000000000 : + 0: 48 89 f8 mov %rdi,%rax + 3: 48 01 d0 add %rdx,%rax + 6: 48 11 ce adc %rcx,%rsi + 9: 48 89 f2 mov %rsi,%rdx + c: c3 ret +``` + +The primary downside of this approach, when considering in 128-bit arithmetic, +is that the performance of these instructions relies on "fusing" these +instructions together. For example backend-based peephole optimization passes +would be required. A naive lowering of the above WebAssembly done in an initial +implementation of Wasmtime looks like (annotated): + +``` +0000000000000000 : + push %rbp + mov %rsp,%rbp + mov %rdx,%rax + add %r8,%rax ;; i64.add_overflow_u: perform the addition + rex setb %dl ;; i64.add_overflow_u: move overflow flags to register + movzbl %dl,%r10d ;; i64.add_overflow_u: zero-extend 8-bit flags to 32-bits + add $0xffffffff,%r10d ;; i64.add_with_carry_u: move overflow register back into eflags + adc %r9,%rcx ;; i64.add_with_carry_u: perform the addition-with-carry + rex setb %dl ;; i64.add_with_carry_u: move flags to register + mov %rbp,%rsp + pop %rbp + ret +``` + +This is much less efficient than the native output on x86\_64 for a number of +reasons: + +* The `setb + movzbl + add $0xfff.., ..` is all unnecessary. A peephole pass can + in theory remove this. +* The final `setb %dl` is unnecessary because the result is dead code. A + peephole pass or otherwise can in theory remove this. + +An initial benchmark of "calculate the 10\_000th fibonacci number" with a bignum +library showed that with these two alternate instructions (instead of +`i64.add128`) that the generated code was **slower** than WebAssembly was before +this proposal. This result indicates that if the motivation for this proposal is +faster 128-bit arithmetic then runtimes will be required to implement the above +optimizations (which Wasmtime, for example, does not already). Other runtime +have not been surveyed yet to see if they already implement such optimizations. + +The conclusion so far is that overflow flags are not the best means to achieve +good performance of 128-bit arithmetic at this time. Overflow flags might be +useful to other use cases in their own right (unrelated to 128-bit arithmetic), +but for 128-bit arithmetic focused cases the `i64.{add,sub}128` instructions are +seen as simpler alternatives for compilers to implement in addition to +toolchains to generate. ### Alternative: Widening multiplication From 5186192d1f8fa22351f3c3e83eb6b44befcc6bfc Mon Sep 17 00:00:00 2001 From: Arthur Meyre Date: Fri, 23 Aug 2024 14:16:28 +0200 Subject: [PATCH 05/51] chore: fix README typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bf5f809e3e..811f655a5c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 128-bit arithemtic proposal for WebAssembly. +# 128-bit arithmetic proposal for WebAssembly. This repository is a clone of [`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for From 2f6010202cc44608630f1a320b6770f393fd10ce Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 4 Sep 2024 20:27:24 -0700 Subject: [PATCH 06/51] Remove `i64.mul128`, add `i64.mul_wide_{s,u}` Some recent [benchmarking] had a surprising result I wasn't trying to dig for. Notably as summarized in #11 some more use cases of widening multiplication being more optimal than 128-by-128 bit multiplication have started to arise. Coupled with local benchmarking confirming that both on x64 and aarch64 that widening multiplication has more support in LLVM for more optimal lowerings and was easier to implement in Wasmtime than the 128-by-128 bit multiplication once various optimizations were implemented. In the end `i64.mul128`, which was primarily motivated by "feels cleaner" and "should have the same performance" as widening multiplication, does not appear to have the expected performance/implementation tradeoff. Getting an as-performant `i64.mul128` instruction relative to `i64.mul_wide_{s,u}` has required more work than expected and so the balance of concerns has me now tipping away from `i64.mul128`, despite it being "less clean" compared to the add/sub opcodes proposed in this PR. Closes #11 [benchmarking]: https://github.com/WebAssembly/128-bit-arithmetic/issues/6#issuecomment-2329985356 --- proposals/128-bit-arithmetic/Overview.md | 124 ++++++++++++++++++----- 1 file changed, 97 insertions(+), 27 deletions(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index bb60dd024e..6784c69ed4 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -32,9 +32,9 @@ WebAssembly by adding new instructions which enable more efficient lowerings of [This is an example](https://godbolt.org/z/fMdjqvEaq) of what LLVM emits today for 128-bit operations in source languages. Notably: -* `i64.add128` - expands to three `add` instructions plus comparisons. -* `i64.sub128` - same as `i64.add`, but with `sub` instructions. -* `i64.mul128` - this notably uses the `__multi3` libcall which is significantly +* `i64_add128` - expands to three `add` instructions plus comparisons. +* `i64_sub128` - same as `i64.add`, but with `sub` instructions. +* `i64_mul128` - this notably uses the `__multi3` libcall which is significantly slower than performing the operation inline. For the same code [this is what native platforms @@ -81,14 +81,15 @@ these issues. ## Proposal -This proposal currently adds three new instructions to WebAssembly: +This proposal currently adds four new instructions to WebAssembly: * `i64.add128` * `i64.sub128` -* `i64.mul128` +* `i64.mul_wide_s` +* `i64.mul_wide_u` -These instructions all have the type `[i64 i64 i64 i64] -> [i64 i64]` where the -values are: +These instructions `i64.add128` and `i64.sub128` have the type +`[i64 i64 i64 i64] -> [i64 i64]` where the values are: * i64 argument 0 - the low 64 bits of the left-hand-side argument * i64 argument 1 - the high 64 bits of the left-hand-side argument @@ -98,11 +99,19 @@ values are: * i64 result 1 - the high 64 bits of the result Each 128-bit operand and result is split into a low/high pair of `i64` values. -The semantics of add/sub/mul are the same as their 64-bit equivalents except +The semantics of add/sub are the same as their 64-bit equivalents except that they work at the level of 128-bits instead of 64-bits. -## Example +The `i64.mul_wide_{s,u}` instructions perform a multiplication of two 64-bit +operands and return the 128-bit result as two `i64` values. These instructions +have the type `[i64 i64] -> [i64 i64]` where the operands are: + +* i64 argument 0 - the left-hand-side argument for multiplication +* i64 argument 1 - the right-hand-side argument for multiplication +* i64 result 0 - the low 64 bits of the result +* i64 result 1 - the high 64 bits of the result +## Example An example of implementing [`u64::overflowing_add`](https://doc.rust-lang.org/std/primitive.u64.html#method.overflowing_add) @@ -135,10 +144,10 @@ will be extended with: ``` instr ::= ... | i64.{binop128} + | i64.mul_wide_s + | i64.mul_wide_u -binop128 ::= add128 - | sub128 - | mul128 +binop128 ::= add128 | sub128 ``` ### Validation @@ -156,6 +165,14 @@ i64.{binop128} ---------------------------------------------------- C ⊢ i64.{binop128} : [i64 i64 i64 i64] -> [i64 i64] +i64.mul_wide_{s,u} + +* The instruction is valid with type [i64 i64] -> [i64 i64] + + + ---------------------------------------------------- + C ⊢ i64.mul_wide_{s,u} : [i64 i64] -> [i64 i64] + ``` ### Execution @@ -186,6 +203,42 @@ i64.{binop128} (i64.const c1) (i64.const c2) (i64.const c3) (i64.const c4) i64.{binop128} ↪ (i64.const r1) (i64.const r2) (if r1:r2 = {binop128}(c1:c2, c3:c4)) + +i64.mul_wide_s + +* Assert: due to validation, two values of type i64 are on the top of the stack. +* Pop the value `i64.const c2` from the stack. +* Pop the value `i64.const c1` from the stack. +* Let `v1` be `c1` sign-extended to 128-bits. +* Let `v2` be `c2` sign-extended to 128-bits. +* Let `r` be the result of computing `mul(v1, v2)` +* Let `r1` be the low 64-bits of `r` +* Let `r2` be the high 64-bits of `r` +* Push the value `i64.const r1` to the stack +* Push the value `i64.const r2` to the stack + + + (i64.const c1) (i64.const c2) i64.mul_wide_s + ↪ (i64.const r1) (i64.const r2) + (if r1:r2 = mul(sextend(c1), sextend(c2))) + +i64.mul_wide_u + +* Assert: due to validation, two values of type i64 are on the top of the stack. +* Pop the value `i64.const c2` from the stack. +* Pop the value `i64.const c1` from the stack. +* Let `v1` be `c1` zero-extended to 128-bits. +* Let `v2` be `c2` zero-extended to 128-bits. +* Let `r` be the result of computing `mul(v1, v2)` +* Let `r1` be the low 64-bits of `r` +* Let `r2` be the high 64-bits of `r` +* Push the value `i64.const r1` to the stack +* Push the value `i64.const r2` to the stack + + + (i64.const c1) (i64.const c2) i64.mul_wide_u + ↪ (i64.const r1) (i64.const r2) + (if r1:r2 = mul(zextend(c1), zextend(c2))) ``` ### Binary Format @@ -198,7 +251,8 @@ will be extended with: instr ::= ... | 0xFC 19:u32 ⇒ i64.add128 | 0xFC 20:u32 ⇒ i64.sub128 - | 0xFC 21:u32 ⇒ i64.mul128 + | 0xFC 21:u32 ⇒ i64.mul_wide_s + | 0xFC 22:u32 ⇒ i64.mul_wide_u ``` > **Note**: opcodes 0-7 are `*.trunc_sat_*` instructions, 8-17 are bulk-memory @@ -215,7 +269,8 @@ will be extended with: plaininstr_l ::= ... | 'i64.add128' ⇒ i64.add128 | 'i64.sub128' ⇒ i64.sub128 - | 'i64.mul128' ⇒ i64.mul128 + | 'i64.mul_wide_s' ⇒ i64.mul_wide_s + | 'i64.mul_wide_u' ⇒ i64.mul_wide_u ``` ## Implementation Status @@ -316,19 +371,34 @@ but for 128-bit arithmetic focused cases the `i64.{add,sub}128` instructions are seen as simpler alternatives for compilers to implement in addition to toolchains to generate. -### Alternative: Widening multiplication - -Instead of `i64.mul128` it would be sufficient to add instructions such as -`i64.mul_wide_{u,s}` which are typed as `[i64 i64] -> [i64 i64]` and are defined -as producing a 128-bit result by multiplying the two 64-bit provided values. -This corresponds to `mul` and `imul` on x86-64 and has [equivalents on other -platforms as well](https://godbolt.org/z/eojr3MdWz). This is a lower-level -primitive than `i64.mul128` and is well-supported across architectures. Given -the current shape of the proposal, however, it "feels cleaner" to have -`i64.mul128`. The `i64.mul_wide_u` instruction can be encoded as `i64.mul128` -with constant 0 values for the upper bits and `i64.mul_wide_s` can be encoded -similarly with a right-shift of the low bits. This means that `i64.mul128` -should be sufficient for expressing the use cases of `i64.mul_wide_{s,u}`. +### Alternative: 128-bit multiplication + +Instead of `i64.mul_wide_{s,u}` it would be possible to instead add `i64.mul128` +which exposes a full 128-bit-by-128-bit multiplication. This is a "cleaner" +alternative where it aligns well with `i64.add128` and `i64.sub128` in style. +This instruction, however, does not exist on any native platform and most native +platforms instead have some form of `i64.mul_wide_{s,u}`. For example on x64 the +`mul` instruction produces a double-wide result. On AArch64 and RISC-V there is +one instruction to produce the low 64-bits of a 64-by-64 multiplication and two +instructions to produce the high bits depending on the sign of the operands. +This means that `i64.mul_wide_{s,u}` map cleanly to what existing architectures +provide. + +Additionally some specific downsides of `i64.mul128` is that it requires further +optimizations to reach the same level of performance as `i64.mul_wide_{s,u}`. +For example if both operations are zero-extended or sign-extended from 64-bits +it's the same as `i64.mul_wide_{s,u}`. Code generators such as LLVM additionally +need to take care to optimize 128-bit multiplication in source languages where +the upper 64-bits are discarded to just producing the low 64-bits. This required +special handling in a prototype implementation of `i64.mul128` for example. +Finally there are algorithms where only the high bits of the 64-by-64 +multiplication are required and that is difficult to pattern match out of a +128-by-128 bit multiplication. + +Overall the case for `i64.mul128` is not as compelling as `i64.mul_wide_{s,u}`. +In benchmarks so far the widening multiplication has performed better or the +same as `i64.mul128` and has been much easier to implement in prototypes of LLVM +and Wasmtime. ### Alternative: Why not add an `i128` type to WebAssembly? From 19511158c666143b348a3d82b9a73778fa7d9930 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 4 Sep 2024 20:39:51 -0700 Subject: [PATCH 07/51] Document leaving out comparison-related instructions This summarizes findings and discussion in #4 into the overview with a section that explains why comparison-related instructions are omitted. --- proposals/128-bit-arithmetic/Overview.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index bb60dd024e..40d9b8d5c7 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -380,3 +380,26 @@ LLVM additionally for native platforms [unconditionally lowers 128-bit division](https://godbolt.org/z/4xbGvbxja) to a host libcall of the `__udivti3` function. It's expected that a host-provided implementation of `__udivti3` is unlikely to be significantly faster than `__udivti3`-compiled-to-WebAssembly. + +### Alternative: Why not add `i64.{lt,gt,ge,gu}128_{s,u}`? + +A question posed in [#4] and at previous meetings has been why not add +comparison operations for 128-bit values? A benchmark of sorting an array of +128-bit integers has shown that engines today have a 60%+ slowdown relative to +native, meaning that there is a good theoretical chunk of room for improvement +here. A prototype implementation in LLVM and Wasmtime however showed that while +performance did improve it did not markedly improve. For example Wasmtime +improved its performance by about 20% on x86\_64 (relative to native). + +Further investigation revealed that while these instructions could be added +they're also relatively easy for engines today to pattern-match and optimized. +For example in [bytecodealliance/wasmtime#9176] rules were added to Cranelift to +recognize 128-bit comparisons and emit those. This means that Wasmtime, for +example, is already able to optimize these patterns without new instructions. + +Overall the meager performance gains and possibility of optimizing preexisting +patterns has led to this proposal not including comparison-related instructions +at this time. + +[#4]: https://github.com/WebAssembly/128-bit-arithmetic/issues/4 +[bytecodealliance/wasmtime#9176]: https://github.com/bytecodealliance/wasmtime/pull/9176 From 75f891a5466f2202eb6c075ec64fd27b85092cdd Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 5 Sep 2024 09:19:11 -0700 Subject: [PATCH 08/51] Add some links to issue discussion from the overview --- proposals/128-bit-arithmetic/Overview.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index bb60dd024e..f2f35f0386 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -226,6 +226,12 @@ plaininstr_l ::= ... ### Alternative: Overflow Flags +> **Note**: this alternative is the subject of [#6] and this section is intended +> to summarize investigations and results of that issue. See [#6] for more +> in-depth discussion too. + +[#6]: https://github.com/WebAssembly/128-bit-arithmetic/issues/6 + A major alternative to this proposal is to expose the lower-level primitives that 128-bit addition/subtraction are themselves built on for the underlying platforms. This hypothetically would remove the need for `i64.{add,sub}128`. The @@ -371,6 +377,10 @@ registers. ### Alternative: Why not add `i64.div128_{u,s}`? +> **Note**: this section is also being discussed in [#15]. + +[#15]: https://github.com/WebAssembly/128-bit-arithmetic/issues/15 + Native ISAs generally do not have support for 128-bit division. The x86-64 ISA has the ability to divide a 128-bit value by a 64-bit value producing a 64-bit result, but this doesn't map to the desired semantics of `i64.div128_{u,s}` to From 07f85932d94c4edfbae6f8d32ce1294a841934d2 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 5 Sep 2024 09:20:58 -0700 Subject: [PATCH 09/51] Add a link to an issue --- proposals/128-bit-arithmetic/Overview.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 6784c69ed4..9b004f3b14 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -373,6 +373,10 @@ toolchains to generate. ### Alternative: 128-bit multiplication +> **Note**: this was historically discussed in some more depth at [#11]. + +[#11]: https://github.com/WebAssembly/128-bit-arithmetic/issues/11 + Instead of `i64.mul_wide_{s,u}` it would be possible to instead add `i64.mul128` which exposes a full 128-bit-by-128-bit multiplication. This is a "cleaner" alternative where it aligns well with `i64.add128` and `i64.sub128` in style. From 5d13483a9237dd7e1ac76bf9e1aa6041982ccb82 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 5 Sep 2024 09:21:46 -0700 Subject: [PATCH 10/51] Add an explicit note pointing to the issue --- proposals/128-bit-arithmetic/Overview.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 40d9b8d5c7..c2a5dcb5ee 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -383,6 +383,8 @@ unlikely to be significantly faster than `__udivti3`-compiled-to-WebAssembly. ### Alternative: Why not add `i64.{lt,gt,ge,gu}128_{s,u}`? +> **Note**: this alternative is further discussed in [#4] + A question posed in [#4] and at previous meetings has been why not add comparison operations for 128-bit values? A benchmark of sorting an array of 128-bit integers has shown that engines today have a 60%+ slowdown relative to From b89c0ceb531d1a2e2c866b0e6e2b05d51aefdf47 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 20 Sep 2024 14:45:59 -0700 Subject: [PATCH 11/51] Summarize discussion of shifting operators in Overview Summarize #5 and write down some words for this in the overview. --- proposals/128-bit-arithmetic/Overview.md | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 64cb84afe8..21057ad506 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -489,3 +489,32 @@ at this time. [#4]: https://github.com/WebAssembly/128-bit-arithmetic/issues/4 [bytecodealliance/wasmtime#9176]: https://github.com/bytecodealliance/wasmtime/pull/9176 + +### Alternative: Why not add shift or rotate instructions? + +> **Note**: this alternative is further discussed in [#5] + +With the goal of supporting 128-bit or wider-than-64 operations, a reasonable +question might also be why not include rotation/shift instructions? For example +for 64-bit integers WebAssembly has `i64.{rotl,rotr,shl,shr_s,shr_u}`, and would +something be appropriate to add for equivalent operations on larger integer +sizes? + +Investigation in [#5] has shown that x86\_64 has instructions [`shld`] and +[`shrd`] which LLVM uses for 128-bit shifts on native platforms. A benchmark +showcasing 128-bit shifts has been difficult to find, but a benchmark for +bignum shifts shows that these instructions are not used. Instead the benchmark +on native makes use of SIMD instructions. When the same benchmarks is compiled +to WebAssembly it additionally uses SIMD instructions. The performance gap on +x86\_64 is quite large with WebAssembly being 100% slower than native in +Wasmtime. On AArch64 the performance gap is 35% or so. + +Given these numbers it's currently conjectured that instructions for this +proposal may not be necessary for shifts and rotates. While there's a gap in +performance between wasm and native which is significant the best location to +improve for bignums may be with new SIMD instructions rather than new special +instructions related to 128-bit integers. + +[`shld`]: https://www.felixcloutier.com/x86/shld +[`shrd`]: https://www.felixcloutier.com/x86/shrd +[#5]: https://github.com/WebAssembly/128-bit-arithmetic/issues/5 From 3f6f479761df469f18124256eeff4ae1fc22503f Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 20 Sep 2024 15:00:25 -0700 Subject: [PATCH 12/51] Fill out some more rationale on overflow flags This fills out some more in the overview about the alternative for overflow flags. I've expanded the section about how the naive wasm instructions for overflow/add-with-carry are significantly different than hardware to help further explain the complications they cause. I've also noted a "way out there" alternatives to possibly consider. --- proposals/128-bit-arithmetic/Overview.md | 49 ++++++++++++++++++++---- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 64cb84afe8..4b7f0790c3 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -302,9 +302,10 @@ Both instructions would produce a 64-bit result plus an overflow flag, an `i32`. The `i32` result would be defined as either 0 or 1 indicating whether an overflow happened during the operation. The `*_add_with_carry_*` variant would additionally take a third parameter which is an overflow flag from a previous -instruction. To match what hardware has this would need to be defined as either -0 or nonzero (note that this is subtly different from the result of -`*_add_overflow_*`). +instruction. From a hardware perspective this value should be `i1`, but that +type isn't available to WebAssembly. Additionally the instruction must be +defined for all possible values, so `add_with_carry_*` would likely define its +input as 0-or-nonzero to indicate whether an extra 1 is being added. An example of using these instructions to implement 128-bit addition would be: @@ -370,12 +371,44 @@ faster 128-bit arithmetic then runtimes will be required to implement the above optimizations (which Wasmtime, for example, does not already). Other runtime have not been surveyed yet to see if they already implement such optimizations. +At this time it's not feasible to implement this fusing/peephole optimization in +Wasmtime either. This largely boils down to the fact that a hypothetical +`*.add_with_carry_*` instruction does not actually match what hardware supports. +Native add-with-carry instructions require that the carry input is located in a +special flags register that is completely different from other operands. This +special register can't be register allocated and on x86\_64 is clobbered by many +instructions. This means that Wasmtime, for example, has no optimizations around +this previously and would require a significant investment of time and +infrastructure to develop such optimizations (just for this one instruction). + +To make this instruction easier to translate in Wasmtime (and maybe other +compilers? they haven't been surveyed) would require changing the definition of +the instructions themselves. One possibility would be to add a `flag` type to +WebAssembly which means that it's known to be a single bit at runtime and is +only produced or consumed by these specific instructions. This still doesn't +match hardware, though, because the carry bit is completely different from +normal instruction outputs. Another possible alternative would be to introduce +the concept of implicit flags to WebAssembly itself (e.g. a "wasm flags +register"). For example `i64.add_with_carry_u` would have the type +`[i64 i64] -> [i64]` where the execution state implicitly handles the carry +flag. + The conclusion so far is that overflow flags are not the best means to achieve -good performance of 128-bit arithmetic at this time. Overflow flags might be -useful to other use cases in their own right (unrelated to 128-bit arithmetic), -but for 128-bit arithmetic focused cases the `i64.{add,sub}128` instructions are -seen as simpler alternatives for compilers to implement in addition to -toolchains to generate. +good performance of 128-bit arithmetic at this time. The naive version of the +instructions are seen as too difficult to compile optimally given today's +compilers (assuming others are similar to Wasmtime). The easiest alternative for +wasm compilers, adding an implicit "wasm flags register" which instructions +modify, is seen as too large of a change for the WebAssembly specification +relative to the benefit. This proposal has been measured to yield significant +speedups on benchmarks with bignum operations and 128-bit operations alike. The +gap between native and WebAssembly is not 0% but it is significantly reduced +from prior (e.g. previously 2x slower and afterwards 10% slower, on multiple +architectures). + +Overflow flags might be useful to other use cases in their own right (unrelated +to 128-bit arithmetic or bignum), but for 128-bit arithmetic focused cases the +`i64.{add,sub}128` instructions are seen as simpler alternatives for compilers +to implement in addition to toolchains to generate. ### Alternative: 128-bit multiplication From 228c9ed9d82daeaf3ca7c1314c85ac66ecdf5ec0 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 22 Sep 2024 18:33:57 -0700 Subject: [PATCH 13/51] Introduce some more subsections, reword and reorder Try to more concretely talk about `i1` and "machine state" and all the complexities that arise. --- proposals/128-bit-arithmetic/Overview.md | 224 ++++++++++++++--------- 1 file changed, 140 insertions(+), 84 deletions(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index 4b7f0790c3..c17d5d845e 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -279,7 +279,7 @@ plaininstr_l ::= ... ## Alternatives -### Alternative: Overflow Flags +### Alternative: Overflow Flags as a value > **Note**: this alternative is the subject of [#6] and this section is intended > to summarize investigations and results of that issue. See [#6] for more @@ -287,32 +287,31 @@ plaininstr_l ::= ... [#6]: https://github.com/WebAssembly/128-bit-arithmetic/issues/6 -A major alternative to this proposal is to expose the lower-level primitives -that 128-bit addition/subtraction are themselves built on for the underlying -platforms. This hypothetically would remove the need for `i64.{add,sub}128`. The -basic idea is that platforms such as x86\_64 and aarch64 expose overflow flags -for arithmetic operations. These platforms additionally have instructions that -consume the overflow flag with an arithmetic operation as well. In WebAssembly -these might look like: - -* `i64.add_overflow_{u,s} : [i64 i64] -> [i64 i32]` -* `i64.add_with_carry_{u,s} : [i64 i64 i32] -> [i64 i32]` - -Both instructions would produce a 64-bit result plus an overflow flag, an `i32`. -The `i32` result would be defined as either 0 or 1 indicating whether an -overflow happened during the operation. The `*_add_with_carry_*` variant would -additionally take a third parameter which is an overflow flag from a previous -instruction. From a hardware perspective this value should be `i1`, but that -type isn't available to WebAssembly. Additionally the instruction must be -defined for all possible values, so `add_with_carry_*` would likely define its -input as 0-or-nonzero to indicate whether an extra 1 is being added. +No current native platform has a single instruction for 128-bit addition or +subtraction. On x86\_64 and aarch64 for example these operations are implemented +with a sequence of two instructions. This gives rise to an alternative to this +proposal which is to support these instructions individually rather than the +combined 128-bit operation. + +Native platforms have an "overflow flag" in their processor state which +instructions can read and write to. In WebAssembly these instructions for +addition might look like this for example: + +* `i64.add_overflow_{u,s} : [i64 i64] -> [i64 $t]` +* `i64.add_with_carry_{u,s} : [i64 i64 $t] -> [i64 $t]` + +Both instructions would produce a 64-bit result plus an overflow flag, here +labeled as `$t`. The exact choice of type here has consequences on the +implementation, and some possibilities are discussed below. Semantically though +the `$t` results are "truthy" if the operation overflowed, and the input to +`add_with_carry_u` means "add one more" if the value is "truthy". An example of using these instructions to implement 128-bit addition would be: ```wasm (module (func $add128 (param i64 i64 i64 i64) (result i64 i64) - (local $oflow i32) + (local $oflow $t) (i64.add_overflow_u (local.get 0) (local.get 2)) local.set $oflow (i64.add_with_carry_u (local.get 1) (local.get 3) (local.get $oflow)) @@ -321,23 +320,31 @@ An example of using these instructions to implement 128-bit addition would be: ) ``` -This is quite close to what x86\_64 would produce for an equivalent function for -example: +This is quite close to [what x86\_64 would produce][godbolt-add-i128] for an +equivalent native function for example: + +[godbolt-add-i128]: https://godbolt.org/z/1x54aneoW ``` 0000000000000000 : 0: 48 89 f8 mov %rdi,%rax - 3: 48 01 d0 add %rdx,%rax - 6: 48 11 ce adc %rcx,%rsi + 3: 48 01 d0 add %rdx,%rax ;; i64.add_overflow_u + 6: 48 11 ce adc %rcx,%rsi ;; i64.add_with_carry_u 9: 48 89 f2 mov %rsi,%rdx c: c3 ret ``` -The primary downside of this approach, when considering in 128-bit arithmetic, -is that the performance of these instructions relies on "fusing" these -instructions together. For example backend-based peephole optimization passes -would be required. A naive lowering of the above WebAssembly done in an initial -implementation of Wasmtime looks like (annotated): +#### Overflow flag: `$t = i32` + +An implementation has been prototyped where `$t` here is `i32`. Overflow-flag +producing operations always generate 0 or 1 and "truthy" is defined as +zero-or-nonzero. Using this prototype an initial benchmark of "calculate the +10\_000th fibonacci number" with a bignum library showed that with these two +alternate instructions (instead of `i64.add128`) that **the generated code was +slower than WebAssembly was before this proposal**. + +To understand why it's slower than before this is an example of the above +128-bit addition function outlined above, with annotated assembly: ``` 0000000000000000 : @@ -355,60 +362,109 @@ implementation of Wasmtime looks like (annotated): ret ``` -This is much less efficient than the native output on x86\_64 for a number of -reasons: - -* The `setb + movzbl + add $0xfff.., ..` is all unnecessary. A peephole pass can - in theory remove this. -* The final `setb %dl` is unnecessary because the result is dead code. A - peephole pass or otherwise can in theory remove this. - -An initial benchmark of "calculate the 10\_000th fibonacci number" with a bignum -library showed that with these two alternate instructions (instead of -`i64.add128`) that the generated code was **slower** than WebAssembly was before -this proposal. This result indicates that if the motivation for this proposal is -faster 128-bit arithmetic then runtimes will be required to implement the above -optimizations (which Wasmtime, for example, does not already). Other runtime -have not been surveyed yet to see if they already implement such optimizations. - -At this time it's not feasible to implement this fusing/peephole optimization in -Wasmtime either. This largely boils down to the fact that a hypothetical -`*.add_with_carry_*` instruction does not actually match what hardware supports. -Native add-with-carry instructions require that the carry input is located in a -special flags register that is completely different from other operands. This -special register can't be register allocated and on x86\_64 is clobbered by many -instructions. This means that Wasmtime, for example, has no optimizations around -this previously and would require a significant investment of time and -infrastructure to develop such optimizations (just for this one instruction). - -To make this instruction easier to translate in Wasmtime (and maybe other -compilers? they haven't been surveyed) would require changing the definition of -the instructions themselves. One possibility would be to add a `flag` type to -WebAssembly which means that it's known to be a single bit at runtime and is -only produced or consumed by these specific instructions. This still doesn't -match hardware, though, because the carry bit is completely different from -normal instruction outputs. Another possible alternative would be to introduce -the concept of implicit flags to WebAssembly itself (e.g. a "wasm flags -register"). For example `i64.add_with_carry_u` would have the type -`[i64 i64] -> [i64]` where the execution state implicitly handles the carry -flag. - -The conclusion so far is that overflow flags are not the best means to achieve -good performance of 128-bit arithmetic at this time. The naive version of the -instructions are seen as too difficult to compile optimally given today's -compilers (assuming others are similar to Wasmtime). The easiest alternative for -wasm compilers, adding an implicit "wasm flags register" which instructions -modify, is seen as too large of a change for the WebAssembly specification -relative to the benefit. This proposal has been measured to yield significant -speedups on benchmarks with bignum operations and 128-bit operations alike. The -gap between native and WebAssembly is not 0% but it is significantly reduced -from prior (e.g. previously 2x slower and afterwards 10% slower, on multiple -architectures). - -Overflow flags might be useful to other use cases in their own right (unrelated -to 128-bit arithmetic or bignum), but for 128-bit arithmetic focused cases the -`i64.{add,sub}128` instructions are seen as simpler alternatives for compilers -to implement in addition to toolchains to generate. +This is quite far from the optimal x86\_64 code above and reveals some drawbacks +of the "overflow flag as a value" model: + +* **On native architectures the overflow flag is not a value**, it's a single + bit in a single fixed register. It's not subject to register allocation and on + platforms like x86\_64 it can be clobbered by many instructions. +* Native architectures generally don't like moving bits in and out of the flags + register (e.g. `setb` extracting above and `add $-1, ...` putting it back in). +* Compilers like Cranelift in Wasmtime do not have preexisting support for + optimizing use of the flags register due to its unique nature. + +Improving the code generation of these instructions in Cranelift/Wasmtime would +require significant investment into specialized optimizations just for these +instructions (e.g. a peephole pass after lowering or significantly different IR +constructs). It's predicted that similar significant investments would be +required to optimize other compilers as well. + +#### Overflow flag: `$t = i1` + +Another possibility of `$t` in the above instructions is to introduce a brand +new type to WebAssembly, `i1` (or `flags` or similar). That more accurately +models what native architectures have in this regard. **The problem with this +alternative, though, is that it fundamentally has the same problem** as the +previous alternative where WebAssembly would be modeling the overflow flag as a +*value* whereas in native architectures it's a piece of *state* on the processor +that instructions can use. + +For example in the above native instructions that Cranelift/Wasmtime generated +if the type were known to be `i1` then the `movzbl %dl,%r10d` instruction would +not be necessary and the `add $0xffffffff,%r10d` could be shrunk to +`add $0xff,%r10b`. Otherwise though there's still the same problems of moving +out of the flags register for lowering and moving back in, which is a +significant slowdown compared to the optimal lowering. + +This alternative not only suffers from the same problems as before with being +significantly difficult to optimize, but it additionally has significant +downsides in terms of adding a brand new type to WebAssembly's type system which +is not a small operation to take on. Given that this doesn't actually make the +optimization problem easier, this is not seen as a favorable alternative. + +#### Overflow flag: `$t = []` + +A third possibility of `$t` is to define it as "nothing". These instructions, +for example, could be: + +* `i64.add_overflow_{u,s} : [i64 i64] -> [i64]` +* `i64.add_with_carry_{u,s} : [i64 i64] -> [i64]` + +This would require the definition of new state in the wasm abstract machine +where a single bit would live (an overflow flag). These instructions would +implicitly operate on this state and would relieve the compiler from having to +figure out how to schedule instructions by moving the burden to the producer. +For example LLVM already supports native platforms with implicit overflow flag +state so this would be another instance of that. + +Purely from the perspective of a WebAssembly compiler, however, this approach +still has its drawbacks. On x86\_64, for example, many instruction clobber flags +which means the compiler would have to meticulously save and restore the flags +around instructions because there is no guarantee that `i64.add_with_carry_u` +is adjacent to `i64.add_overflow_u`. Platforms like aarch64 might be easier +where instructions opt-in to modifying flags, but platforms like riscv64 which +don't have a flags register at all would still be equally inconvenienced as +before. + +It's worth noting that this alternative would additionally require new +instructions to move in and out of this state. For example if there are two +overflow flags live at the same time a WebAssembly compiler would need to modify +and update this flag appropriately. This addition would also mean that +`i64.add_with_carry_*` would be one of the first instructions that would operate +on implicit state rather than explicit operands. + +#### Overflow flags: Summary + +Modeling a native platform's overflow flag as a value, for example `i32`, is not +an accurate reflection of how native architectures work. Efficiently bridging +this gap in expressivity is extremely difficult for existing compilers as this +is unlike any other compilation problem that WebAssembly compilers deal with +today. The chosen type representation, be it `i1` or `i32`, does not +significantly reduce the complexity of this problem, too. + +Attempting to model an overflow flag as implicit machine state in WebAssembly +itself is significantly hindered due to native platform differences in how this +state is managed. Implicit state alone still requires a significant increase +in the complexity of existing compilers to bridge these differences. Reducing +this complexity cost would require further changes to be made to this +alternative. + +This proposal's instructions, `i64.{add,sub}128`, [have been +benchmarked][overflow-flags-numbers] to show that `fib_10000` on x86\_64 goes +from 120% slower-than-native before this proposal to 9% after. On +aarch64 the numbers are 72% originally slower-than-native and 2% +faster-than-native afterwards. The implementation of `i64.add128` required very +little optimization work, and that which was implemented was similar to all other +optimization work already implemented in Cranelift for WebAssembly. + +Overall `i64.add128` is expected to be a small addition to WebAssembly which is +not significantly difficult for runtimes to implement. It's additionally +expected, in the case of wide arithmetic, to reap the lion's share of the +performance benefits and close the gap with native platforms. This contrasts +`*.add_with_carry_*` which, while more general, carries significant complexity +to close the performance gap with native. + +[overflow-flags-numbers]: https://github.com/WebAssembly/128-bit-arithmetic/issues/2#issuecomment-2307646174 ### Alternative: 128-bit multiplication From 4eec709dd7c4b34077daecb6534a761e535f19c9 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 23 Sep 2024 08:51:22 -0700 Subject: [PATCH 14/51] Small clarification --- proposals/128-bit-arithmetic/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/128-bit-arithmetic/Overview.md index c17d5d845e..589e365240 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/128-bit-arithmetic/Overview.md @@ -293,7 +293,7 @@ with a sequence of two instructions. This gives rise to an alternative to this proposal which is to support these instructions individually rather than the combined 128-bit operation. -Native platforms have an "overflow flag" in their processor state which +Many native platforms have an "overflow flag" in their processor state which instructions can read and write to. In WebAssembly these instructions for addition might look like this for example: From aa3f5c43a7d05e9b085216c44f890a9b43d5de17 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 8 Oct 2024 10:35:12 -0700 Subject: [PATCH 15/51] Rename repository to "wide-arithmetic" As voted on in today's meeting the name of the proposal is now "wide-arithmetic" instead of "128-bit-arithmetic" (apologies for now-broken links that are going to be generated...) --- README.md | 6 ++--- .../Overview.md | 24 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) rename proposals/{128-bit-arithmetic => wide-arithmetic}/Overview.md (97%) diff --git a/README.md b/README.md index 811f655a5c..d6536b9c19 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# 128-bit arithmetic proposal for WebAssembly. +# Wide Arithmetic proposal for WebAssembly. This repository is a clone of [`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for discussion, prototype specification, and implementation of a proposal to add -support for 128-bit arithmetic instructions for WebAssembly. +support for wide arithmetic instructions for WebAssembly. -* See the [overview](./proposals/128-bit-arithmetic/Overview.md) for a +* See the [overview](./proposals/wide-arithmetic/Overview.md) for a high-level summary and rationale of the proposal. Original README from upstream repository follows... diff --git a/proposals/128-bit-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md similarity index 97% rename from proposals/128-bit-arithmetic/Overview.md rename to proposals/wide-arithmetic/Overview.md index db057b3efe..70ade0abcf 100644 --- a/proposals/128-bit-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -1,15 +1,19 @@ -# 128-bit arithmetic +# Wide Arithmetic ## Motivation -There are a number of use cases for 128-bit numbers and arithmetic in source -languages today such as: +There are a number of use cases for arithmetic on larger-than-64-bit numbers in +source languages today: * Aribtrary precision math - many languages have a bignum-style library which is an arbitrary precision integer. For example libgmp in C, numbers Python, `BigInt` in JS, etc. Big integers have a range of specific applications as well which can include being integral portions of cryptographic algorithms. +* Fixed but wider-than-64 precision math - cryptographic algorithms often use + 128-bit or 256-bit integers for example and often need to + add/subtract/multiply/divide these operands. + * Checking for overflow - some programs may want to check for overflow when performing arithmetic operations, such as seeing if a 64-bit addition overflowed. Using 128-bit arithmetic can be done to detect these sorts of @@ -27,7 +31,7 @@ The goal of this proposal is to close this performance gap between native and WebAssembly by adding new instructions which enable more efficient lowerings of 128-bit arithmetic operations. -### WebAssembly today with 128-bit arithmetic +### WebAssembly today with Wide arithmetic [This is an example](https://godbolt.org/z/fMdjqvEaq) of what LLVM emits today for 128-bit operations in source languages. Notably: @@ -285,7 +289,7 @@ plaininstr_l ::= ... > to summarize investigations and results of that issue. See [#6] for more > in-depth discussion too. -[#6]: https://github.com/WebAssembly/128-bit-arithmetic/issues/6 +[#6]: https://github.com/WebAssembly/wide-arithmetic/issues/6 No current native platform has a single instruction for 128-bit addition or subtraction. On x86\_64 and aarch64 for example these operations are implemented @@ -464,13 +468,13 @@ performance benefits and close the gap with native platforms. This contrasts `*.add_with_carry_*` which, while more general, carries significant complexity to close the performance gap with native. -[overflow-flags-numbers]: https://github.com/WebAssembly/128-bit-arithmetic/issues/2#issuecomment-2307646174 +[overflow-flags-numbers]: https://github.com/WebAssembly/wide-arithmetic/issues/2#issuecomment-2307646174 ### Alternative: 128-bit multiplication > **Note**: this was historically discussed in some more depth at [#11]. -[#11]: https://github.com/WebAssembly/128-bit-arithmetic/issues/11 +[#11]: https://github.com/WebAssembly/wide-arithmetic/issues/11 Instead of `i64.mul_wide_{s,u}` it would be possible to instead add `i64.mul128` which exposes a full 128-bit-by-128-bit multiplication. This is a "cleaner" @@ -542,7 +546,7 @@ registers. > **Note**: this section is also being discussed in [#15]. -[#15]: https://github.com/WebAssembly/128-bit-arithmetic/issues/15 +[#15]: https://github.com/WebAssembly/wide-arithmetic/issues/15 Native ISAs generally do not have support for 128-bit division. The x86-64 ISA has the ability to divide a 128-bit value by a 64-bit value producing a 64-bit @@ -576,7 +580,7 @@ Overall the meager performance gains and possibility of optimizing preexisting patterns has led to this proposal not including comparison-related instructions at this time. -[#4]: https://github.com/WebAssembly/128-bit-arithmetic/issues/4 +[#4]: https://github.com/WebAssembly/wide-arithmetic/issues/4 [bytecodealliance/wasmtime#9176]: https://github.com/bytecodealliance/wasmtime/pull/9176 ### Alternative: Why not add shift or rotate instructions? @@ -606,4 +610,4 @@ instructions related to 128-bit integers. [`shld`]: https://www.felixcloutier.com/x86/shld [`shrd`]: https://www.felixcloutier.com/x86/shrd -[#5]: https://github.com/WebAssembly/128-bit-arithmetic/issues/5 +[#5]: https://github.com/WebAssembly/wide-arithmetic/issues/5 From 7336c7a3407431df896d4f1b98ea9b9e6360d186 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 8 Oct 2024 17:20:38 -0700 Subject: [PATCH 16/51] Update implementation status Landed and/or made PRs in a number of repos after phase 2 today. --- proposals/wide-arithmetic/Overview.md | 37 ++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 70ade0abcf..3bd9a59120 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -279,7 +279,42 @@ plaininstr_l ::= ... ## Implementation Status -... TODO ... +Tests: + +* [ ] Core spec tests + * [example test in Wasmtime](https://github.com/bytecodealliance/wasmtime/blob/bc6b0fe4cb7c0d6f2fa436e185411db705e4a4ff/tests/misc_testsuite/wide-arithmetic.wast) + +Engines: + +* [x] [Wasmtime](https://github.com/bytecodealliance/wasmtime/pull/9403) +* [ ] Reference interpreter + +Toolchains: + +* [x] [LLVM](https://github.com/llvm/llvm-project/pull/111598) + +Binary Decoders: + +* [x] [`wasmparser` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) +* [ ] Reference interpreter + +Validation: + +* [x] [`wasmparser` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) +* [ ] Reference interpreter + +Binary encoders: + +* [x] [`wasm-encoder` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) + +Text parsers: + +* [x] [`wast` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) +* [ ] Reference interpreter + +Fuzzing and test-case generation: + +* [x] [`wasm-smith` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) ## Alternatives From f292896bef63408a88d1dc4e56b2ac1cb8c530ab Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 16 Oct 2024 05:03:42 -0700 Subject: [PATCH 17/51] Add initial tests and interpreter support This commit updates the reference interpreter with the new instructions proposed here along with an initial `*.wast` test imported from Wasmtime's own test suite plus a few extra tests. --- interpreter/binary/decode.ml | 4 + interpreter/binary/encode.ml | 5 + interpreter/dune | 1 + interpreter/dune-project | 1 + interpreter/exec/eval.ml | 8 + interpreter/exec/eval_num.ml | 24 +- interpreter/exec/eval_num.mli | 2 + interpreter/exec/i64.ml | 22 ++ interpreter/syntax/ast.ml | 4 + interpreter/syntax/free.ml | 1 + interpreter/syntax/operators.ml | 5 + interpreter/text/arrange.ml | 10 + interpreter/text/lexer.mll | 7 +- interpreter/valid/valid.ml | 6 + interpreter/wasm.opam | 1 + test/core/wide-arithmetic.wast | 470 ++++++++++++++++++++++++++++++++ 16 files changed, 569 insertions(+), 2 deletions(-) create mode 100644 test/core/wide-arithmetic.wast diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 43de4553b0..ae16921f81 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -506,6 +506,10 @@ let rec instr s = | 0x0fl -> table_grow (at var s) | 0x10l -> table_size (at var s) | 0x11l -> table_fill (at var s) + | 0x13l -> i64_add128 + | 0x14l -> i64_sub128 + | 0x15l -> i64_mul_wide_s + | 0x16l -> i64_mul_wide_u | n -> illegal2 s pos b n ) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index f5665bb1cd..26f1f6c817 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -728,6 +728,11 @@ struct | VecReplace (V128 (F32x4 (V128Op.Replace i))) -> vecop 0x20l; byte i | VecReplace (V128 (F64x2 (V128Op.Replace i))) -> vecop 0x22l; byte i + | Binary128 Add128 -> op 0xfc; u32 0x13l + | Binary128 Sub128 -> op 0xfc; u32 0x14l + | BinaryWide MulS -> op 0xfc; u32 0x15l + | BinaryWide MulU -> op 0xfc; u32 0x16l + let const c = list instr c.it; end_ () diff --git a/interpreter/dune b/interpreter/dune index fc62062483..fb3bbbc66b 100644 --- a/interpreter/dune +++ b/interpreter/dune @@ -3,6 +3,7 @@ (library (public_name wasm) (modules :standard \ main wasm wast smallint) + (libraries stdint) ) (executable diff --git a/interpreter/dune-project b/interpreter/dune-project index 87233ebc8d..bd9c4aff4f 100644 --- a/interpreter/dune-project +++ b/interpreter/dune-project @@ -18,5 +18,6 @@ (depends (ocaml (>= 4.12)) (menhir (>= 20220210)) + (stdint (>= 0.7.2)) ) ) diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 90221c4cdf..55b2922869 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -584,6 +584,14 @@ let rec step (c : config) : config = (try Vec (Eval_vec.eval_replaceop replaceop v r) :: vs', [] with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) + | Binary128 op, Num rhs_hi :: Num rhs_lo :: Num lhs_hi :: Num lhs_lo :: vs -> + let (lo, hi) = Eval_num.eval_binop128 op lhs_lo lhs_hi rhs_lo rhs_hi + in Num hi :: Num lo :: vs, [] + + | BinaryWide op, Num rhs :: Num lhs :: vs -> + let (lo, hi) = Eval_num.eval_binop_wide op lhs rhs + in Num hi :: Num lo :: vs, [] + | _ -> let s1 = string_of_values (List.rev vs) in let s2 = string_of_value_types (List.map type_of_value (List.rev vs)) in diff --git a/interpreter/exec/eval_num.ml b/interpreter/exec/eval_num.ml index 40dd1be07c..f7c834ec34 100644 --- a/interpreter/exec/eval_num.ml +++ b/interpreter/exec/eval_num.ml @@ -57,7 +57,27 @@ struct end module I32Op = IntOp (I32) (I32Num) -module I64Op = IntOp (I64) (I64Num) +module I64Op = struct + include IntOp (I64) (I64Num) + + open I64Num + + let binop128 op = + let f = match op with + | Ast.Add128 -> I64.add128 + | Ast.Sub128 -> I64.sub128 + in fun v1 v2 v3 v4 -> + let (a, b) = f (of_num 1 v1) (of_num 2 v2) (of_num 3 v3) (of_num 4 v4) + in (to_num a, to_num b) + + let binop_wide op = + let f = match op with + | Ast.MulS -> I64.mul_wide_s + | Ast.MulU -> I64.mul_wide_u + in fun v1 v2 -> + let (a, b) = f (of_num 1 v1) (of_num 2 v2) + in (to_num a, to_num b) +end (* Float operators *) @@ -195,3 +215,5 @@ let eval_binop = op I32Op.binop I64Op.binop F32Op.binop F64Op.binop let eval_testop = op I32Op.testop I64Op.testop F32Op.testop F64Op.testop let eval_relop = op I32Op.relop I64Op.relop F32Op.relop F64Op.relop let eval_cvtop = op I32CvtOp.cvtop I64CvtOp.cvtop F32CvtOp.cvtop F64CvtOp.cvtop +let eval_binop128 = I64Op.binop128 +let eval_binop_wide = I64Op.binop_wide diff --git a/interpreter/exec/eval_num.mli b/interpreter/exec/eval_num.mli index 719c16f404..446e37b693 100644 --- a/interpreter/exec/eval_num.mli +++ b/interpreter/exec/eval_num.mli @@ -5,3 +5,5 @@ val eval_binop : Ast.binop -> num -> num -> num val eval_testop : Ast.testop -> num -> bool val eval_relop : Ast.relop -> num -> num -> bool val eval_cvtop : Ast.cvtop -> num -> num +val eval_binop128 : Ast.binop128 -> num -> num -> num -> num -> num * num +val eval_binop_wide : Ast.binop_wide -> num -> num -> num * num diff --git a/interpreter/exec/i64.ml b/interpreter/exec/i64.ml index f43235dd3e..a547470be9 100644 --- a/interpreter/exec/i64.ml +++ b/interpreter/exec/i64.ml @@ -9,3 +9,25 @@ include Ixx.Make let of_int64 i = i let to_int64 i = i end) + +open Stdint + +let to_i128 lo hi = + let lo = Int128.of_uint64 (Uint64.of_int64 lo) in + let hi = Int128.of_uint64 (Uint64.of_int64 hi) in + Int128.logor lo (Int128.shift_left hi 64) + +let split_i128 v = + let lo = Int64.of_int128 v in + let hi = Int64.of_int128 (Int128.shift_right v 64) in + (lo, hi) + +let add128 a b c d = split_i128 (Int128.add (to_i128 a b) (to_i128 c d)) +let sub128 a b c d = split_i128 (Int128.sub (to_i128 a b) (to_i128 c d)) + +let mul_wide_s a b = split_i128 (Int128.mul (Int128.of_int64 a) (Int128.of_int64 b)) +let mul_wide_u a b = + let a = Uint64.of_int64 a in + let b = Uint64.of_int64 b in + let c = Uint128.mul (Uint128.of_uint64 a) (Uint128.of_uint64 b) in + split_i128 (Int128.of_uint128 c) diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index a6eb0d9cc1..08770ea56b 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -100,6 +100,8 @@ type unop = (I32Op.unop, I64Op.unop, F32Op.unop, F64Op.unop) Values.op type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Values.op type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Values.op type cvtop = (I32Op.cvtop, I64Op.cvtop, F32Op.cvtop, F64Op.cvtop) Values.op +type binop128 = Add128 | Sub128 +type binop_wide = MulS | MulU type vec_testop = (V128Op.testop) Values.vecop type vec_relop = (V128Op.relop) Values.vecop @@ -182,6 +184,8 @@ and instr' = | Compare of relop (* numeric comparison *) | Unary of unop (* unary numeric operator *) | Binary of binop (* binary numeric operator *) + | Binary128 of binop128 (* 128-bit operation taking 4 arguments *) + | BinaryWide of binop_wide (* wide-arithmetic binop *) | Convert of cvtop (* conversion *) | VecConst of vec (* constant *) | VecTest of vec_testop (* vector test *) diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index 8e1a37a458..29030e2fbc 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -95,6 +95,7 @@ let rec instr (e : instr) = memories zero | MemoryInit x -> memories zero ++ datas (var x) | DataDrop x -> datas (var x) + | Binary128 _ | BinaryWide _ -> empty and block (es : instr list) = let free = list instr es in {free with labels = shift free.labels} diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 296bb1e77e..e2588ab95b 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -500,3 +500,8 @@ let f64x2_pmax = VecBinary (V128 (F64x2 V128Op.Pmax)) let f64x2_promote_low_f32x4 = VecConvert (V128 (F64x2 V128Op.PromoteLowF32x4)) let f64x2_convert_low_i32x4_s = VecConvert (V128 (F64x2 V128Op.ConvertSI32x4)) let f64x2_convert_low_i32x4_u = VecConvert (V128 (F64x2 V128Op.ConvertUI32x4)) + +let i64_add128 = Binary128 Add128 +let i64_sub128 = Binary128 Sub128 +let i64_mul_wide_s = BinaryWide MulS +let i64_mul_wide_u = BinaryWide MulU diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 8b9029bf5e..284e686eb4 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -155,6 +155,14 @@ struct | TruncSatSF64 -> "trunc_sat_f64_s" | TruncSatUF64 -> "trunc_sat_f64_u" | ReinterpretFloat -> "reinterpret_f" ^ xx + + let binop128 op = match op with + | Add128 -> "add128" + | Sub128 -> "sub128" + + let binop_wide op = match op with + | MulS -> "mul_wide_s" + | MulU -> "mul_wide_u" end module FloatOp = @@ -504,6 +512,8 @@ let rec instr e = | VecSplat op -> vec_splatop op, [] | VecExtract op -> vec_extractop op, [] | VecReplace op -> vec_replaceop op, [] + | Binary128 op -> "i64." ^ (IntOp.binop128 op), [] + | BinaryWide op -> "i64." ^ (IntOp.binop_wide op), [] in Node (head, inner) let const head c = diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index 1cda0087de..e10f7f02cc 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -84,7 +84,7 @@ let character = [^'"''\\''\x00'-'\x1f''\x7f'-'\xff'] | utf8enc | '\\'escape - | '\\'hexdigit hexdigit + | '\\'hexdigit hexdigit | "\\u{" hexnum '}' let nat = num | "0x" hexnum @@ -655,6 +655,11 @@ rule token = parse | "f32x4.replace_lane" -> VEC_REPLACE f32x4_replace_lane | "f64x2.replace_lane" -> VEC_REPLACE f64x2_replace_lane + | "i64.add128" -> BINARY i64_add128 + | "i64.sub128" -> BINARY i64_sub128 + | "i64.mul_wide_s" -> BINARY i64_mul_wide_s + | "i64.mul_wide_u" -> BINARY i64_mul_wide_u + | "type" -> TYPE | "func" -> FUNC | "param" -> PARAM diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index cfe7f310f2..6291d8ece7 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -514,6 +514,12 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type "invalid lane index"; [t; NumType t2] --> [t] + | Binary128 _ -> + [NumType I64Type; NumType I64Type; NumType I64Type; NumType I64Type] --> [NumType I64Type; NumType I64Type] + + | BinaryWide _ -> + [NumType I64Type; NumType I64Type] --> [NumType I64Type; NumType I64Type] + and check_seq (c : context) (s : infer_result_type) (es : instr list) : infer_result_type = match es with diff --git a/interpreter/wasm.opam b/interpreter/wasm.opam index ad8b60af23..0b6e9af22f 100644 --- a/interpreter/wasm.opam +++ b/interpreter/wasm.opam @@ -12,6 +12,7 @@ depends: [ "dune" {>= "2.9"} "ocaml" {>= "4.12"} "menhir" {>= "20220210"} + "stdint" {>= "0.7.2"} "odoc" {with-doc} ] build: [ diff --git a/test/core/wide-arithmetic.wast b/test/core/wide-arithmetic.wast new file mode 100644 index 0000000000..bc6bb2aeea --- /dev/null +++ b/test/core/wide-arithmetic.wast @@ -0,0 +1,470 @@ +(module + (func (export "i64.add128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) + (func (export "i64.sub128") (param i64 i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) + (func (export "i64.mul_wide_s") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_s) + (func (export "i64.mul_wide_u") (param i64 i64) (result i64 i64) + local.get 0 + local.get 1 + i64.mul_wide_u) +) + +;; simple addition +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 1)) + +;; simple subtraction +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const -2)) + +;; simple mul_wide +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 1)) + (i64.const -1) (i64.const 0)) + +;; 20 randomly generated test cases for i64.add128 +(assert_return (invoke "i64.add128" + (i64.const -2418420703207364752) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2418420703207364753) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const -4579433644172935106) (i64.const -1)) + (i64.const -4579433644172935106) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 1) (i64.const -1)) + (i64.const 1) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const -2) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 1) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 0) + (i64.const 0) (i64.const -1)) + (i64.const 0) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const 0) (i64.const 6184727276166606191) + (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 6184727276166606192)) +(assert_return (invoke "i64.add128" + (i64.const -8434911321912688222) (i64.const -1) + (i64.const 1) (i64.const -1)) + (i64.const -8434911321912688221) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 1) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5148941131328838092) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const -5148941131328838092)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const 2) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const -1) (i64.const -1) + (i64.const -3636740005180858631) (i64.const -1)) + (i64.const -3636740005180858632) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const -5529682780229988275) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -5529682780229988275) (i64.const -1)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const -5381447440966559717) + (i64.const 1020031372481336745) (i64.const 1)) + (i64.const 1020031372481336746) (i64.const -5381447440966559716)) +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 1) + (i64.const 0) (i64.const 0)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.add128" + (i64.const -9133888546939907356) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const -9133888546939907355) (i64.const 0)) +(assert_return (invoke "i64.add128" + (i64.const -4612047512704241719) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const -4612047512704241719) (i64.const -2)) +(assert_return (invoke "i64.add128" + (i64.const 414720966820876428) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const 414720966820876429) (i64.const -1)) + + +;; 20 randomly generated test cases for i64.sub128 +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -2459085471354756766) + (i64.const -9151153060221070927) (i64.const -1)) + (i64.const 9151153060221070927) (i64.const -2459085471354756766)) +(assert_return (invoke "i64.sub128" + (i64.const 4566502638724063423) (i64.const -4282658540409485563) + (i64.const -6884077310018979971) (i64.const -1)) + (i64.const -6996164124966508222) (i64.const -4282658540409485563)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 3118380319444903041) + (i64.const 0) (i64.const 3283115686417695443)) + (i64.const 1) (i64.const -164735366972792402)) +(assert_return (invoke "i64.sub128" + (i64.const -7208415241680161810) (i64.const -1) + (i64.const 1) (i64.const 0)) + (i64.const -7208415241680161811) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 3944850126731328706) + (i64.const 1) (i64.const 1)) + (i64.const -1) (i64.const 3944850126731328704)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 4855833073346115923) (i64.const -6826437637438999645)) + (i64.const -4855833073346115924) (i64.const 6826437637438999644)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const -1) (i64.const -1)) + (i64.const 2) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 0) + (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const -1) (i64.const -1) + (i64.const 0) (i64.const 0)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const -6365475388498096428) (i64.const -1)) + (i64.const 6365475388498096429) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 6804238617560992346) (i64.const -1) + (i64.const 0) (i64.const -1)) + (i64.const 6804238617560992346) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const -7756145513466453619)) + (i64.const -1) (i64.const 7756145513466453619)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const -1) + (i64.const 1) (i64.const 1)) + (i64.const 0) (i64.const -2)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const 1) (i64.const 0)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.sub128" + (i64.const 1) (i64.const 5602881641763648953) + (i64.const -2110589244314239080) (i64.const -1)) + (i64.const 2110589244314239081) (i64.const 5602881641763648953)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const 1) + (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 3553816990259121806) (i64.const -2105235417856431622)) + (i64.const -3553816990259121806) (i64.const 2105235417856431620)) +(assert_return (invoke "i64.sub128" + (i64.const 1861102705894987245) (i64.const 1) + (i64.const 3713781778534059871) (i64.const 1)) + (i64.const -1852679072639072626) (i64.const -1)) +(assert_return (invoke "i64.sub128" + (i64.const 0) (i64.const -1) + (i64.const 1) (i64.const 1832524486821761762)) + (i64.const -1) (i64.const -1832524486821761764)) + +;; 20 randomly generated test cases for i64.mul_wide_s +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 6287758211025156705)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -6643537319803451357) (i64.const 1)) + (i64.const -6643537319803451357) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -2483565146858803428) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -3838951433439430085) (i64.const 3471602925362676030)) + (i64.const 5186941893001237834) (i64.const -722475195264825124)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8262495286814853129) (i64.const 7883241869666573970)) + (i64.const -8557189786755031842) (i64.const -3530988912334554469)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 4278371902407959701) (i64.const 1)) + (i64.const 4278371902407959701) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -8852706149487089182) (i64.const -1)) + (i64.const 8852706149487089182) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -4329244561838653387)) + (i64.const 4329244561838653387) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 697896157315764057) (i64.const 1)) + (i64.const 697896157315764057) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 1)) + (i64.const 1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const -3769664482072947073)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const 8414291037346403854)) + (i64.const 8414291037346403854) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 5014655679779318485) (i64.const -5080037812563681985)) + (i64.const 2842857627777395563) (i64.const -1380983027057486843)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) + +;; 20 randomly generated test cases for i64.mul_wide_u +(assert_return (invoke "i64.mul_wide_u" (i64.const -4734436040338162711) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3270597527173764279) (i64.const 6636648075495406358)) + (i64.const -5430303818902260550) (i64.const 1176674035141685826)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7771814344630108151) (i64.const 1)) + (i64.const -7771814344630108151) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -7864138787704962081)) + (i64.const -7864138787704962081) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 518555141550256010)) + (i64.const 518555141550256010) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1118900477321231571) (i64.const -1)) + (i64.const -1118900477321231571) (i64.const 1118900477321231570)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -5586890671027490027) (i64.const 1)) + (i64.const -5586890671027490027) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 3603850799751152505)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -1) (i64.const -1)) + (i64.const 1) (i64.const 18446744073709551614)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 1)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const -7344082851774441644) (i64.const 3896439839137544024)) + (i64.const 5738542512914895072) (i64.const 2345175459296971666)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 0) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 616395976148874061) (i64.const 0)) + (i64.const 0) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 2810729703362889816) (i64.const -1)) + (i64.const -2810729703362889816) (i64.const 2810729703362889815)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const -1)) + (i64.const -1) (i64.const 0)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 1) (i64.const 0)) + (i64.const 0) (i64.const 0)) + +;; assert overlong encodings for each instruction's binary encoding are accepted +(module binary + "\00asm" "\01\00\00\00" + + "\01\11" ;; type section, 17 bytes + "\02" ;; 2 count + "\60" ;; type0 = function + "\04\7e\7e\7e\7e" ;; 4 params - all i64 + "\02\7e\7e" ;; 2 results - both i64 + "\60" ;; type1 = function + "\02\7e\7e" ;; 2 params - both i64 + "\02\7e\7e" ;; 2 results - both i64 + + "\03\05" ;; function section, 5 byte + "\04" ;; 4 count + "\00\00\01\01" ;; types of each function (0, 0, 1, 1) + + "\07\3d" ;; export section 0x3d bytes + "\04" ;; 4 count + "\0ai64.add128\00\00" ;; "i64.add128" which is function 0 + "\0ai64.sub128\00\01" ;; "i64.add128" which is function 1 + "\0ei64.mul_wide_s\00\02" ;; "i64.mul_wide_s" which is function 2 + "\0ei64.mul_wide_u\00\03" ;; "i64.mul_wide_s" which is function 3 + + "\0a\37" ;; code section + byte length + "\04" ;; 4 count + + "\0e" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\93\80\00" ;; i64.add128 (overlong) + "\0b" ;; end + + "\0d" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\20\02" ;; local.get 2 + "\20\03" ;; local.get 3 + "\fc\94\00" ;; i64.sub128 (overlong) + "\0b" ;; end + + "\0c" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\95\80\80\80\00" ;; i64.mul_wide_s (overlong) + "\0b" ;; end + + "\0b" ;; byte length + "\00" ;; no locals + "\20\00" ;; local.get 0 + "\20\01" ;; local.get 1 + "\fc\96\80\80\00" ;; i64.mul_wide_u (overlong) + "\0b" ;; end +) + +(assert_return (invoke "i64.add128" + (i64.const 1) (i64.const 2) + (i64.const 3) (i64.const 4)) + (i64.const 4) (i64.const 6)) +(assert_return (invoke "i64.sub128" + (i64.const 2) (i64.const 5) + (i64.const 1) (i64.const 2)) + (i64.const 1) (i64.const 3)) +(assert_return (invoke "i64.mul_wide_s" (i64.const 1) (i64.const -2)) + (i64.const -2) (i64.const -1)) +(assert_return (invoke "i64.mul_wide_u" (i64.const 3) (i64.const 2)) + (i64.const 6) (i64.const 0)) + +;; some invalid types for these instructions + +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.add128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.add128) + ) + "type mismatch") + +(assert_invalid + (module + (func (param i64 i64 i64 i64) (result i64) + local.get 0 + local.get 1 + local.get 2 + local.get 3 + i64.sub128) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64 i64 i64) (result i64 i64) + local.get 0 + local.get 1 + local.get 2 + i64.sub128) + ) + "type mismatch") + +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_s) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_s) + ) + "type mismatch") + +(assert_invalid + (module + (func (param i64 i64) (result i64) + local.get 0 + local.get 1 + i64.mul_wide_u) + ) + "type mismatch") +(assert_invalid + (module + (func (param i64) (result i64 i64) + local.get 0 + i64.mul_wide_u) + ) + "type mismatch") From ac04d8d771e89a2924747230a229ad1289a1299b Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 16 Oct 2024 05:07:52 -0700 Subject: [PATCH 18/51] Update reference interpreter status in overview --- proposals/wide-arithmetic/Overview.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 3bd9a59120..d5da9bb713 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -287,7 +287,7 @@ Tests: Engines: * [x] [Wasmtime](https://github.com/bytecodealliance/wasmtime/pull/9403) -* [ ] Reference interpreter +* [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) Toolchains: @@ -296,12 +296,12 @@ Toolchains: Binary Decoders: * [x] [`wasmparser` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) -* [ ] Reference interpreter +* [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) Validation: * [x] [`wasmparser` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) -* [ ] Reference interpreter +* [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) Binary encoders: @@ -310,7 +310,7 @@ Binary encoders: Text parsers: * [x] [`wast` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) -* [ ] Reference interpreter +* [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) Fuzzing and test-case generation: From bf99b7c1b2df0de2952325c82af6817b483fcd71 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 16 Oct 2024 05:14:54 -0700 Subject: [PATCH 19/51] Try fixing CI --- .github/workflows/ci-interpreter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 928f939a86..a07cab56c4 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 4.14.x - name: Setup OCaml tools - run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 + run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 - name: Setup Node.js uses: actions/setup-node@v4 with: From 7ca132894b018840d1654c7f54fce57f1d624d78 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 16 Oct 2024 05:31:32 -0700 Subject: [PATCH 20/51] Disable node tests Node can't run this proposal yet --- .github/workflows/ci-interpreter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index a07cab56c4..f6c68766f9 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -31,4 +31,4 @@ jobs: - name: Build interpreter run: cd interpreter && opam exec make - name: Run tests - run: cd interpreter && opam exec make JS=node ci + run: cd interpreter && opam exec make ci From 6270ae83c59f293ecd8c7cb33c871e30491ba8b8 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 16 Oct 2024 06:29:53 -0700 Subject: [PATCH 21/51] Update tests ticky box in overview --- proposals/wide-arithmetic/Overview.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index d5da9bb713..b85c67f475 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -281,8 +281,7 @@ plaininstr_l ::= ... Tests: -* [ ] Core spec tests - * [example test in Wasmtime](https://github.com/bytecodealliance/wasmtime/blob/bc6b0fe4cb7c0d6f2fa436e185411db705e4a4ff/tests/misc_testsuite/wide-arithmetic.wast) +* [x] [Core spec tests](https://github.com/WebAssembly/wide-arithmetic/pull/22) Engines: From fcb020beba4572d2239e719c8f54e8906a269088 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 23 Oct 2024 11:49:00 -0700 Subject: [PATCH 22/51] Add Rust toolchain under implementation status --- proposals/wide-arithmetic/Overview.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index b85c67f475..26b4852a60 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -290,7 +290,8 @@ Engines: Toolchains: -* [x] [LLVM](https://github.com/llvm/llvm-project/pull/111598) +* [x] [LLVM / Clang](https://github.com/llvm/llvm-project/pull/111598) +* [x] [Rust](https://github.com/rust-lang/rust/pull/132077) Binary Decoders: From 3672bdb39ed8b12e07c1527068d0890c1b099371 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 24 Oct 2024 08:31:51 -0700 Subject: [PATCH 23/51] Fill out spec text for new instructions Done to the best of my ability understanding how the spec all works. Probably needs editing/spot-checking. --- README.md | 3 ++ document/core/binary/instructions.rst | 12 +++++ document/core/exec/instructions.rst | 74 +++++++++++++++++++++++++++ document/core/exec/numerics.rst | 40 +++++++++++++-- document/core/syntax/instructions.rst | 8 +-- document/core/text/instructions.rst | 9 ++++ document/core/util/macros.def | 6 +++ document/core/valid/instructions.rst | 24 +++++++++ 8 files changed, 169 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d6536b9c19..cc79e23c87 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ support for wide arithmetic instructions for WebAssembly. * See the [overview](./proposals/wide-arithmetic/Overview.md) for a high-level summary and rationale of the proposal. +* See the [modified spec](https://webassembly.github.io/wide-arithmetic/core/) + for the formalization of this proposal. + Original README from upstream repository follows... -------------------------------------------------------------------------------- diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst index e13a03236e..98e7fddb8d 100644 --- a/document/core/binary/instructions.rst +++ b/document/core/binary/instructions.rst @@ -461,6 +461,18 @@ whereas the actual opcode is encoded by a variable-length :ref:`unsigned integer \hex{FC}~~7{:}\Bu32 &\Rightarrow& \I64.\TRUNC\K{\_sat\_}\F64\K{\_u} \\ \end{array} +Wide arithmetic instructions are encoded similarly to saturating instructions +above. + +.. math:: + \begin{array}{llclll} + \production{instruction} & \Binstr &::=& \dots && \phantom{thisshouldbeenough} \\&&|& + \hex{FC}~~19{:}\Bu32 &\Rightarrow& \I64.\ADD128 \\ &&|& + \hex{FC}~~20{:}\Bu32 &\Rightarrow& \I64.\SUB128 \\ &&|& + \hex{FC}~~21{:}\Bu32 &\Rightarrow& \I64.\MULWIDE\K{\_s} \\ &&|& + \hex{FC}~~22{:}\Bu32 &\Rightarrow& \I64.\MULWIDE\K{\_u} \\ + \end{array} + .. index:: vector instruction pair: binary format; instruction diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index b03b600bfc..7e0bc96a6e 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -181,6 +181,80 @@ Where the underlying operators are non-deterministic, because they may return on & (\iff \cvtop^{\sx^?}_{t_1,t_2}(c_1) = \{\}) \end{array} +.. _exec-binop128: + +:math:`\I64\K{.}\binop\K{128}` +.......................................... + +1. Assert: due to :ref:`validation `, four values of :ref:`value type ` :math:`\I64` are on the top of the stack. + +2. Pop the value :math:`\I64.\CONST~c_4` from the stack. + +3. Pop the value :math:`\I64.\CONST~c_3` from the stack. + +4. Pop the value :math:`\I64.\CONST~c_2` from the stack. + +5. Pop the value :math:`\I64.\CONST~c_1` from the stack. + +6. Let :math:`l` be the result of computing :math:`\iconcat_\K{64,128}(c_1, c_2)` + +7. Let :math:`r` be the result of computing :math:`\iconcat_\K{64,128}(c_3, c_4)` + +8. Let :math:`c` be the result of computing :math:`\binopF_\K{i128}(l, r)` + +9. Let :math:`c_l, c_h` be the result of computing :math:`\isplit_\K{128,64}(c)` + +10. Push the value :math:`\I64.\CONST~c_l` to the stack. + +11. Push the value :math:`\I64.\CONST~c_h` to the stack. + +.. math:: + \begin{array}{lcl@{\qquad}l} + (\I64\K{.}\CONST~c_1)~ + (\I64\K{.}\CONST~c_2)~ + (\I64\K{.}\CONST~c_3)~ + (\I64\K{.}\CONST~c_4)~ + \I64\K{.}\binop\K{128} + &\stepto& + (\I64\K{.}\CONST~c_l)~ + (\I64\K{.}\CONST~c_h) + & (\iff c_l, c_h = \isplit_\K{128,64}(\binop_\K{i128}(\iconcat_\K{64,128}(c_1, c_2), \iconcat_\K{64,128}(c_3, c_4))) \\ + \end{array} + +:math:`\I64\K{.}\MULWIDE\K{\_}\sx` +.......................................... + +1. Assert: due to :ref:`validation `, two values of :ref:`value type ` :math:`\I64` are on the top of the stack. + +2. Pop the value :math:`\I64.\CONST~c_2` from the stack. + +3. Pop the value :math:`\I64.\CONST~c_1` from the stack. + +4. Let :math:`l` be the result of computing :math:`\extend^{sx}_{\K{i64},\K{i128}}(c_1)` + +5. Let :math:`r` be the result of computing :math:`\extend^{sx}_{\K{i64},\K{i128}}(c_2)` + +5. Let :math:`c` be the result of computing :math:`\imul_\K{128}(l, r)` + +6. Let :math:`c_l, c_h` be the result of computing :math:`\isplit_\K{128,64}(c)` + +7. Push the value :math:`\I64.\CONST~c_l` to the stack. + +8. Push the value :math:`\I64.\CONST~c_h` to the stack. + +.. math:: + \begin{array}{lcl@{\qquad}l} + (\I64\K{.}\CONST~c_1)~ + (\I64\K{.}\CONST~c_2)~ + \I64\K{.}\MULWIDE\K{\_}\sx + &\stepto& + (\I64\K{.}\CONST~c_l)~ + (\I64\K{.}\CONST~c_h) + & (\iff c_l, c_h = \isplit_\K{128,64}(\imul_\K{128}( + \extend^{sx}_{\K{i64},\K{i128}}(c_1), + \extend^{sx}_{\K{i64},\K{i128}}(c_2)))) \\ + \end{array} + .. index:: reference instructions, reference pair: execution; instruction diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index b76190f6f2..7b442889e5 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1767,9 +1767,9 @@ Conversions :math:`\truncu_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * Else if :math:`z` is a number and :math:`\trunc(z)` is a value within range of the target type, then return that value. @@ -1793,9 +1793,9 @@ Conversions :math:`\truncs_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * If :math:`z` is a number and :math:`\trunc(z)` is a value within range of the target type, then return that value. @@ -1973,3 +1973,35 @@ Conversions \begin{array}{lll@{\qquad}l} \narrowu_{M,N}(i) &=& \satu_N(\signed_M(i)) \end{array} + + +.. _op-iconcat: + +:math:`\iconcat_{M,N}(i_1, i_2)` +................................. + +* Let :math:`h` be the result of :math:`\ishl_N(\extend^u_{M,N}(i_2), M)` + +* Return the result of :math:`\ior_N(\extend^u_{M,N}(i_1), h)` + +.. math:: + \begin{array}{lll@{\qquad}l} + \iconcat_{M,N}(i_1, i_2) &=& \ior_N(\extend^u_{M,N}(i_1), \ishl_N(\extend^u_{M,N}(i_2), M)) + \end{array} + + +.. _op-isplit: + +:math:`\isplit_{M,N}(i)` +................................. + +* Let :math:`l` be the result of :math:`\wrap_{M,N}(i)` + +* Let :math:`h` be the result of :math:`\wrap_{M,N}(\ishru_M(i, N))` + +* Return :math:`l, h` + +.. math:: + \begin{array}{lll@{\qquad}l} + \isplit_{M,N}(i) &=& \wrap_{M,N}(i), \wrap_{M,N}(\ishru_M(i, N)) + \end{array} diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index ddb51d7ee6..c3cf4a5ad6 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -66,6 +66,8 @@ These operations closely match respective operations available in hardware. \K{f}\X{nn}\K{.}\CONVERT\K{\_i}\X{mm}\K{\_}\sx \\&&|& \K{i}\X{nn}\K{.}\REINTERPRET\K{\_f}\X{nn} ~|~ \K{f}\X{nn}\K{.}\REINTERPRET\K{\_i}\X{nn} \\&&|& + \K{i64.}\binop\K{128} ~|~ + \K{i64.}\MULWIDE\K{\_}\sx \\&&|& \dots \\ \production{integer unary operator} & \iunop &::=& \K{clz} ~|~ @@ -88,9 +90,9 @@ These operations closely match respective operations available in hardware. \K{abs} ~|~ \K{neg} ~|~ \K{sqrt} ~|~ - \K{ceil} ~|~ - \K{floor} ~|~ - \K{trunc} ~|~ + \K{ceil} ~|~ + \K{floor} ~|~ + \K{trunc} ~|~ \K{nearest} \\ \production{floating-point binary operator} & \fbinop &::=& \K{add} ~|~ diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index 3029bc09f0..411cee875c 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -537,6 +537,15 @@ Numeric Instructions \text{i64.extend32\_s} &\Rightarrow& \I64.\EXTEND\K{32\_s} \\ \end{array} +.. math:: + \begin{array}{llclll} + \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& + \text{i64.add128} &\Rightarrow& \I64.\ADD128 \\ &&|& + \text{i64.sub128} &\Rightarrow& \I64.\SUB128 \\ &&|& + \text{i64.mul\_wide\_s} &\Rightarrow& \I64.\MULWIDE\K{\_s} \\ &&|& + \text{i64.mul\_wide\_u} &\Rightarrow& \I64.\MULWIDE\K{\_u} \\ + \end{array} + .. index:: vector instruction pair: text format; instruction diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 06b60fd6f4..d971dd211f 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -439,6 +439,10 @@ .. |DEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{demote}} .. |REINTERPRET| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{reinterpret}} +.. |ADD128| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{add128}} +.. |SUB128| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{sub128}} +.. |MULWIDE| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{mul\_wide}} + .. |VCONST| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{const}} .. |SHUFFLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{shuffle}} .. |SWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{swizzle}} @@ -1176,6 +1180,8 @@ .. |narrow| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}} .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} +.. |isplit| mathdef:: \xref{exec/numerics}{op-isplit}{\F{isplit}} +.. |iconcat| mathdef:: \xref{exec/numerics}{op-iconcat}{\F{iconcat}} .. Numerics, meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 6a8a110a57..1424eda62d 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -189,6 +189,30 @@ Numeric Instructions C \vdashinstr t_2\K{.}\cvtop\K{\_}t_1\K{\_}\sx^? : [t_1] \to [t_2] } +.. _valid-binop128: + +:math:`\I64\K{.}\binop\K{128}` +.......................................... + +* The instruction is valid with type :math:`[\I64~\I64~\I64~\I64] \to [\I64~\I64]`. + +.. math:: + \frac{ + }{ + C \vdashinstr t\K{.}\binop\K{128} : [\I64~\I64~\I64~\I64] \to [\I64~\I64] + } + +:math:`\I64\K{.}\MULWIDE\K{\_}\sx` +.......................................... + +* The instruction is valid with type :math:`[\I64~\I64] \to [\I64~\I64]`. + +.. math:: + \frac{ + }{ + C \vdashinstr t\K{.}\MULWIDE\K{\_}\sx : [\I64~\I64] \to [\I64~\I64] + } + .. index:: reference instructions, reference type pair: validation; instruction From a59154f984a073850a0c8268f651804e8816faf3 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 24 Oct 2024 08:35:31 -0700 Subject: [PATCH 24/51] Link to spec from implementation status --- proposals/wide-arithmetic/Overview.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 26b4852a60..3b8158343b 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -316,6 +316,11 @@ Fuzzing and test-case generation: * [x] [`wasm-smith` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) +Formal specification: + +* [x] [PR to update](https://github.com/WebAssembly/wide-arithmetic/pull/25) +* [x] [Online rendering](https://webassembly.github.io/wide-arithmetic/core/) + ## Alternatives ### Alternative: Overflow Flags as a value From d02f4ecedca22634ffaebfcde223248bc85ff891 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sat, 26 Oct 2024 10:02:56 -0700 Subject: [PATCH 25/51] Add links to new parts of spec --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cc79e23c87..ec7025f905 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,13 @@ support for wide arithmetic instructions for WebAssembly. high-level summary and rationale of the proposal. * See the [modified spec](https://webassembly.github.io/wide-arithmetic/core/) - for the formalization of this proposal. + for the formalization of this proposal. Notably... + * [new abstract syntax](https://webassembly.github.io/wide-arithmetic/core/syntax/instructions.html#numeric-instructions) + * [new binary opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/binary/instructions.html#numeric-instructions) + * [new text opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/text/instructions.html#numeric-instructions) + * [new validation](https://webassembly.github.io/wide-arithmetic/core/valid/instructions.html#xref-syntax-types-syntax-valtype-mathsf-i64-mathsf-xref-syntax-instructions-syntax-binop-mathit-binop-mathsf-128) + * [new execution](https://webassembly.github.io/wide-arithmetic/core/exec/instructions.html#xref-syntax-types-syntax-valtype-mathsf-i64-mathsf-xref-syntax-instructions-syntax-binop-mathit-binop-mathsf-128) + * [new helper functions](https://webassembly.github.io/wide-arithmetic/core/exec/numerics.html#xref-exec-numerics-op-iconcat-mathrm-iconcat-m-n-i-1-i-2) Original README from upstream repository follows... From fb4d10feebad59fa01f910f614a163ceb6707da0 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 3 Nov 2024 06:52:20 -0800 Subject: [PATCH 26/51] Indicate the phase of the proposal in the README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ec7025f905..2bfd9d0fc4 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ This repository is a clone of [`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for discussion, prototype specification, and implementation of a proposal to add -support for wide arithmetic instructions for WebAssembly. +support for wide arithmetic instructions for WebAssembly. This proposal is +currently [at phase 2 in the proposals process][phase]. + +[phase]: https://github.com/WebAssembly/proposals * See the [overview](./proposals/wide-arithmetic/Overview.md) for a high-level summary and rationale of the proposal. From 8b545f5518d94ee4e3473504d51bdee8fc3a1e14 Mon Sep 17 00:00:00 2001 From: Andrea Canciani Date: Mon, 30 Dec 2024 15:43:44 +0100 Subject: [PATCH 27/51] Fix typo in Overview.md --- proposals/wide-arithmetic/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 3b8158343b..680bb0ee9e 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -5,7 +5,7 @@ There are a number of use cases for arithmetic on larger-than-64-bit numbers in source languages today: -* Aribtrary precision math - many languages have a bignum-style library which is +* Arbitrary precision math - many languages have a bignum-style library which is an arbitrary precision integer. For example libgmp in C, numbers Python, `BigInt` in JS, etc. Big integers have a range of specific applications as well which can include being integral portions of cryptographic algorithms. From 7c4026fd358d7e330fb3da14be94f4638e8a0672 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 31 Jan 2025 15:19:23 -0800 Subject: [PATCH 28/51] Fix typo in overview Apparently I'm playing too many video games. --- proposals/wide-arithmetic/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 680bb0ee9e..012d69f6c4 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -261,7 +261,7 @@ instr ::= ... > **Note**: opcodes 0-7 are `*.trunc_sat_*` instructions, 8-17 are bulk-memory > and reference-types `{table,memory}.{copy,fill,init}`, `{elem,data}.drop`, and -> `table.grow`. Opcode 18 is proposed to be `memory.discord`. +> `table.grow`. Opcode 18 is proposed to be `memory.discard`. ### Text Format From e34e59bda82c309ae3125bb752f29b1a3e4f0a97 Mon Sep 17 00:00:00 2001 From: Robin Freyler Date: Wed, 12 Mar 2025 10:39:34 +0100 Subject: [PATCH 29/51] mention Wasmi in the list of engines supporting the proposal --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 012d69f6c4..580ad7fdd9 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -287,6 +287,7 @@ Engines: * [x] [Wasmtime](https://github.com/bytecodealliance/wasmtime/pull/9403) * [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) +* [x] [Wasmi](https://github.com/wasmi-labs/wasmi/pull/1383) Toolchains: From 32a50d63b4b69021434089d12b2f69c76a3d6d85 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 21 Mar 2025 09:25:03 -0700 Subject: [PATCH 30/51] Summarize the conclusion of `i64.add_wide3` This commit is an attempt to summarize the discussion in #6 and write it up in the overview. I've updated various sections and added a new section about `add_wide3` as well. The tl;dr; is that the proposal is still going to exclusively support `i64.add128` and `i64.sub128` to defer `i64.add_wide3` to a theoretical future where `i1` is a native WebAssembly type. Closes #6 Closes #34 --- proposals/wide-arithmetic/Overview.md | 159 +++++++++++++++++++++++--- 1 file changed, 143 insertions(+), 16 deletions(-) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 580ad7fdd9..af05f35d7a 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -419,10 +419,26 @@ of the "overflow flag as a value" model: optimizing use of the flags register due to its unique nature. Improving the code generation of these instructions in Cranelift/Wasmtime would -require significant investment into specialized optimizations just for these -instructions (e.g. a peephole pass after lowering or significantly different IR -constructs). It's predicted that similar significant investments would be -required to optimize other compilers as well. +require optimizations such as: + +* Detecting during lowering that `i64.add_with_carry_u` is directly after + `i64.add_overflow_u`, the carry flag is an input, and the carry flag isn't + used again. When all of these starts align it's possible to leave the overflow + flag in the EFLAGS register. Currently this is not feasible in + Cranelift/Wasmtime and it's predicted that similar significant investments + would be required to optimize other compilers as well. + +* Fuse WebAssembly-level instructions into a single complier "IR node". For + example the above example could be fused into an internal "add128" instruction + specific to just a compiler itself. This is predicted to be less work than the + above bullet but still a non-trivial investment. This sort of analysis is also + much easier/harder depending on the exact type of `$t`, for example when `$t = + i32` in this case here compiler would have to do additional analyses to prove + that the range of the input value is `[0, 1]`. + +Overall it's expected that there will be significant work necessary to, somehow, +fuse the two native instructions together to optimize handling of the overflow +flag. #### Overflow flag: `$t = i1` @@ -439,13 +455,28 @@ if the type were known to be `i1` then the `movzbl %dl,%r10d` instruction would not be necessary and the `add $0xffffffff,%r10d` could be shrunk to `add $0xff,%r10b`. Otherwise though there's still the same problems of moving out of the flags register for lowering and moving back in, which is a -significant slowdown compared to the optimal lowering. - -This alternative not only suffers from the same problems as before with being -significantly difficult to optimize, but it additionally has significant -downsides in terms of adding a brand new type to WebAssembly's type system which -is not a small operation to take on. Given that this doesn't actually make the -optimization problem easier, this is not seen as a favorable alternative. +significant slowdown compared to the optimal lowering. In essence somehow fusing +together these WebAssembly instructions into a native instruction pair is +required. + +It's worth mentioning though that if a compiler were to fuse WebAssembly +instructions together into a single IR node, before lowering to native +instructions, it will be easier with an `i1` type than with another type. Using +`i1` statically shows that the value is in the range `[0, 1]` which can make +some fusing optimizations easier. + +This alternative additionally has significant downsides in terms of adding a +brand new type to WebAssembly's type system which is not a small operation to +take on. For example all engines need to be updated to understand a new value +type, an ABI needs to be designed, various other instructions would be needed to +convert to/from an `i1`, etc. This is expected to be a large amount of work +relative to the gain here. + +The conclusion at this time is that while `i1` might help fusing instructions +together optimization passes for compilers the cost of adding it to all of +WebAssembly isn't worth it at this time. In other words the extra analysis a +compiler would have to do to prove an `i32`, for example, is in the range +`[0, 1]` is expected to be much simpler relative to adding a new value type. #### Overflow flag: `$t = []` @@ -482,10 +513,13 @@ on implicit state rather than explicit operands. Modeling a native platform's overflow flag as a value, for example `i32`, is not an accurate reflection of how native architectures work. Efficiently bridging -this gap in expressivity is extremely difficult for existing compilers as this -is unlike any other compilation problem that WebAssembly compilers deal with -today. The chosen type representation, be it `i1` or `i32`, does not -significantly reduce the complexity of this problem, too. +this gap in expressivity is unlike any other compilation problem that +WebAssembly compilers deal with today by requiring separate WebAssembly +instructions are across each other are fused together somehow to internally +adjacent native instructions along the compilation pipeline. For `i32` as a +representation it means that compilers additionally need to perform range +analysis of values to determine such a fusing of valid, and while `i1` helps the +situation it has orthogonal drawbacks of adding a new value type to WebAssembly. Attempting to model an overflow flag as implicit machine state in WebAssembly itself is significantly hindered due to native platform differences in how this @@ -507,10 +541,103 @@ not significantly difficult for runtimes to implement. It's additionally expected, in the case of wide arithmetic, to reap the lion's share of the performance benefits and close the gap with native platforms. This contrasts `*.add_with_carry_*` which, while more general, carries significant complexity -to close the performance gap with native. +to close the performance gap with native. Finally it's predicted that a +maximally useful `*.add_with_carry_*`-style instruction would want to use `i1` +instead of `i32` for the overflow flag. This is always possible to add in a +future proposal to WebAssembly and using 128-bit addition does not close off the +possibility of adding these instructions in the future. [overflow-flags-numbers]: https://github.com/WebAssembly/wide-arithmetic/issues/2#issuecomment-2307646174 +### Alternative: `i64.add_wide3` + +> **Note**: this is an extraction of the discussion in [#6]. + +A common use case of wide-arithmetic is summing up "BigInt" numbers. This is +where numbers are typically represented as a list of 64-bit integers and adding +two of them together is basically exactly the `i64.add_with_carry_u` instruction +above. In pseudocode the meat of a bigint addition loop is: + +```rust +let mut carry: i1 = 0; +let a: &mut [u64] = ...; +let b: &[u64] = ...; +for (a, b) in a.iter_mut().zip(b) { + (*a, carry) = i64_add_with_carry_u(*a, *b, carry); +} +// ... process `carry` remainder next ... +``` + +This means that a bigint addition loop can be exactly modeled with a single +WebAssembly instruction. On x64 this might be lowered as: + +``` +mov %c, 0 ;; register %c holds the carry between loop iterations +start: + mov %a, %c ;; free up %c as early as possible to help the pipeline + xor %c, %c ;; prepare for `setb` + add %a, (%addr_of_a) + adc %a, (%addr_of_b) + setb %c + mov (%addr_of_a), %a + + ;; ...bookkeeping to figure out if we're at the end of the loop... + jne start +``` + +In lieu of adding an `i1` type to WebAssembly, discussed above, it would also be +possible to model this instruction as: + +``` +i64.add_wide3_u : [i64 i64 i64] -> [i64 i64] +``` + +The semantics of this instruction would be to sum all three operands, producing +the low/high bits of the result. The high bits are guaranteed to be in the range +of [0, 2] for the full range of inputs, but if one of the inputs can be proven +to be in the range of [0, 1] then the output high bits are also in the range [0, +1] which maps very closely to the `i64.add_with_carry_u` instruction. +Furthermore this extension of the values could lead to: + +``` +i64.add_wide_u : [i64 i64] -> [i64 i64] +``` + +Which is the same idea, but the carry flag is modeled as `i64` here. This +approach can suit bigint addition well and was prototyped in V8 and showed good +performance. When additionally coupled with a simple range analysis to prove +an input to `64.add_wide3_u` was in the range [0, 1] this resulted in a small +speedup as well, getting even closer to native. + +These instructions, however, can be modeled with `i64.add128` as well: + +``` +i64.add_wide_u(a, b) ≡ i64.add128(a, 0, b, 0) +i64.add_wide3_u(a, b, c) ≡ i64.add128(i64.add128(a, 0, b, 0), c, 0) +``` + +Encoding the extra `i64.const 0` operands to `i64.add128` is less +space-efficient than using `i64.add_wide*` but semantically these constructs map +to the same semantics. This means that if `i64.add128` is used as a primitive +it's expected that a simple compiler analysis can be used to transform +`i64.add128` to these nodes (this is how the original V8 prototype worked). + +Coupled with the fact that these instructions are a generalization of the truly +desired semantics, which is to take/produce `i1` instead of `i64`, it's +currently concluded to defer this alternative. With an `i1` type these +instructions are exactly the `i64.add_{overflow,with_carry}_u` alternatives from +above: + +``` +i64.add_wide_u(a, b) ≡ i64.add_overflow(a, b) +i64.add_wide3_u(a, b, c) ≡ i64.add_with_carry_u(a, b, c) +``` + +So in effect, due to all-`i64` not being the ideal type signature and the +complexities of adding `i1` as a new value type, these instructions are not +chosen at this time. Instead they're modeled as `i64.add128` and engines are +left to optimize internally if necessary. + ### Alternative: 128-bit multiplication > **Note**: this was historically discussed in some more depth at [#11]. From d6ab6ba37102d18eaa87b83ac9955dd163c431e9 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 8 Apr 2025 09:43:28 -0700 Subject: [PATCH 31/51] Update phase listing of this proposal in README Bump from 2 to 3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2bfd9d0fc4..bd457fa9b2 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository is a clone of [`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for discussion, prototype specification, and implementation of a proposal to add support for wide arithmetic instructions for WebAssembly. This proposal is -currently [at phase 2 in the proposals process][phase]. +currently [at phase 3 in the proposals process][phase]. [phase]: https://github.com/WebAssembly/proposals From 6cc9e9b48315e312069d3a010177f3dfe4642f64 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 17 Sep 2025 21:28:36 -0700 Subject: [PATCH 32/51] Reimplement interpreter support for wide-arithmetic --- .github/workflows/ci-interpreter.yml | 2 +- interpreter/binary/decode.ml | 4 +++ interpreter/binary/encode.ml | 5 ++++ interpreter/dune | 1 + interpreter/dune-project | 1 + interpreter/exec/eval.ml | 8 ++++++ interpreter/exec/eval_num.ml | 25 ++++++++++++++++++- interpreter/exec/eval_num.mli | 2 ++ interpreter/exec/i64.ml | 22 ++++++++++++++++ interpreter/syntax/ast.ml | 4 +++ interpreter/syntax/free.ml | 1 + interpreter/syntax/mnemonics.ml | 7 +++++- interpreter/text/arrange.ml | 10 ++++++++ interpreter/text/lexer.mll | 7 +++++- interpreter/valid/valid.ml | 9 ++++++- interpreter/wasm.opam | 1 + spectec/src/backend-interpreter/construct.ml | 4 +++ .../src/backend-interpreter/dune-ref-interp | 2 +- 18 files changed, 109 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 28013deb9f..255a2b9929 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 4.14.x - name: Setup OCaml tools - run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 + run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 stdint.0.7.2 - name: Setup Node.js uses: actions/setup-node@v4 with: diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 433b092ed9..f0df7c1363 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -677,6 +677,10 @@ let rec instr s = | 0x0fl -> let x = at idx s in table_grow x | 0x10l -> let x = at idx s in table_size x | 0x11l -> let x = at idx s in table_fill x + | 0x13l -> i64_add128 + | 0x14l -> i64_sub128 + | 0x15l -> i64_mul_wide_s + | 0x16l -> i64_mul_wide_u | n -> illegal2 s pos b n ) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 884592772c..0564fb1f9d 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -902,6 +902,11 @@ struct | VecReplace (V128 (F32x4 V128Op.(Replace i))) -> vecop 0x20l; u8 i | VecReplace (V128 (F64x2 V128Op.(Replace i))) -> vecop 0x22l; u8 i + | Binary128 Add128 -> op 0xfc; u32 0x13l + | Binary128 Sub128 -> op 0xfc; u32 0x14l + | BinaryWide MulS -> op 0xfc; u32 0x15l + | BinaryWide MulU -> op 0xfc; u32 0x16l + and catch c = match c.it with | Catch (x1, x2) -> byte 0x00; idx x1; idx x2 diff --git a/interpreter/dune b/interpreter/dune index fc62062483..fb3bbbc66b 100644 --- a/interpreter/dune +++ b/interpreter/dune @@ -3,6 +3,7 @@ (library (public_name wasm) (modules :standard \ main wasm wast smallint) + (libraries stdint) ) (executable diff --git a/interpreter/dune-project b/interpreter/dune-project index 6154603698..d05449f69a 100644 --- a/interpreter/dune-project +++ b/interpreter/dune-project @@ -18,5 +18,6 @@ (depends (ocaml (>= 4.14)) (menhir (>= 20220210)) + (stdint (>= 0.7.2)) ) ) diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index dc36be500e..7642f4cc7d 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -1025,6 +1025,14 @@ let rec step (c : config) : config = (try Vec (Eval_vec.eval_vreplaceop replaceop v r) :: vs', [] with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) + | Binary128 op, Num rhs_hi :: Num rhs_lo :: Num lhs_hi :: Num lhs_lo :: vs' -> + let (lo, hi) = Eval_num.eval_binop128 op lhs_lo lhs_hi rhs_lo rhs_hi + in Num hi :: Num lo :: vs', [] + + | BinaryWide op, Num rhs :: Num lhs :: vs' -> + let (lo, hi) = Eval_num.eval_binop_wide op lhs rhs + in Num hi :: Num lo :: vs', [] + | _ -> let s1 = string_of_values (List.rev vs) in let s2 = string_of_resulttype (List.map type_of_value (List.rev vs)) in diff --git a/interpreter/exec/eval_num.ml b/interpreter/exec/eval_num.ml index a0e99bdd65..5a913ee60b 100644 --- a/interpreter/exec/eval_num.ml +++ b/interpreter/exec/eval_num.ml @@ -57,7 +57,28 @@ struct end module I32Op = IntOp (I32) (I32Num) -module I64Op = IntOp (I64) (I64Num) +module I64Op = struct + include IntOp (I64) (I64Num) + + open I64Num + + let binop128 op = + let f = match op with + | Ast.Add128 -> I64.add128 + | Ast.Sub128 -> I64.sub128 + in fun v1 v2 v3 v4 -> + let (a, b) = f (of_num 1 v1) (of_num 2 v2) (of_num 3 v3) (of_num 4 v4) + in (to_num a, to_num b) + + let binop_wide op = + let f = match op with + | Ast.MulS -> I64.mul_wide_s + | Ast.MulU -> I64.mul_wide_u + in fun v1 v2 -> + let (a, b) = f (of_num 1 v1) (of_num 2 v2) + in (to_num a, to_num b) +end + (* Float operators *) @@ -194,3 +215,5 @@ let eval_binop = op I32Op.binop I64Op.binop F32Op.binop F64Op.binop let eval_testop = op I32Op.testop I64Op.testop F32Op.testop F64Op.testop let eval_relop = op I32Op.relop I64Op.relop F32Op.relop F64Op.relop let eval_cvtop = op I32CvtOp.cvtop I64CvtOp.cvtop F32CvtOp.cvtop F64CvtOp.cvtop +let eval_binop128 = I64Op.binop128 +let eval_binop_wide = I64Op.binop_wide diff --git a/interpreter/exec/eval_num.mli b/interpreter/exec/eval_num.mli index e5c53f11e1..d7ebf4baa7 100644 --- a/interpreter/exec/eval_num.mli +++ b/interpreter/exec/eval_num.mli @@ -5,3 +5,5 @@ val eval_binop : Ast.binop -> num -> num -> num val eval_testop : Ast.testop -> num -> bool val eval_relop : Ast.relop -> num -> num -> bool val eval_cvtop : Ast.cvtop -> num -> num +val eval_binop128 : Ast.binop128 -> num -> num -> num -> num -> num * num +val eval_binop_wide : Ast.binop_wide -> num -> num -> num * num diff --git a/interpreter/exec/i64.ml b/interpreter/exec/i64.ml index f4b0cdcbf8..965e7605ac 100644 --- a/interpreter/exec/i64.ml +++ b/interpreter/exec/i64.ml @@ -8,3 +8,25 @@ include Ixx.Make let to_int64 = Fun.id let to_hex_string = Printf.sprintf "%Lx" end) + +open Stdint + +let to_i128 lo hi = + let lo = Int128.of_uint64 (Uint64.of_int64 lo) in + let hi = Int128.of_uint64 (Uint64.of_int64 hi) in + Int128.logor lo (Int128.shift_left hi 64) + +let split_i128 v = + let lo = Int64.of_int128 v in + let hi = Int64.of_int128 (Int128.shift_right v 64) in + (lo, hi) + +let add128 a b c d = split_i128 (Int128.add (to_i128 a b) (to_i128 c d)) +let sub128 a b c d = split_i128 (Int128.sub (to_i128 a b) (to_i128 c d)) + +let mul_wide_s a b = split_i128 (Int128.mul (Int128.of_int64 a) (Int128.of_int64 b)) +let mul_wide_u a b = + let a = Uint64.of_int64 a in + let b = Uint64.of_int64 b in + let c = Uint128.mul (Uint128.of_uint64 a) (Uint128.of_uint64 b) in + split_i128 (Int128.of_uint128 c) diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index 6686c41dce..2128e483e8 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -114,6 +114,8 @@ type unop = (I32Op.unop, I64Op.unop, F32Op.unop, F64Op.unop) Value.op type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Value.op type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Value.op type cvtop = (I32Op.cvtop, I64Op.cvtop, F32Op.cvtop, F64Op.cvtop) Value.op +type binop128 = Add128 | Sub128 +type binop_wide = MulS | MulU type vtestop = (V128Op.testop) Value.vecop type vrelop = (V128Op.relop) Value.vecop @@ -245,6 +247,8 @@ and instr' = | Compare of relop (* numeric comparison *) | Unary of unop (* unary numeric operator *) | Binary of binop (* binary numeric operator *) + | Binary128 of binop128 (* 128-bit operation taking 4 arguments *) + | BinaryWide of binop_wide (* wide-arithmetic binop *) | Convert of cvtop (* conversion *) | VecConst of vec (* constant *) | VecTest of vtestop (* vector test *) diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index a5c9f9b3ce..091d87e485 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -182,6 +182,7 @@ let rec instr (e : instr) = | ArrayInitElem (x, y) -> types (idx x) ++ elems (idx y) | ExternConvert _ -> empty | Const _ | Test _ | Compare _ | Unary _ | Binary _ | Convert _ -> empty + | Binary128 _ | BinaryWide _ -> empty | VecConst _ | VecTest _ | VecUnary _ | VecBinary _ | VecTernary _ | VecCompare _ | VecConvert _ | VecShift _ | VecBitmask _ diff --git a/interpreter/syntax/mnemonics.ml b/interpreter/syntax/mnemonics.ml index aa21519586..13b230cdfe 100644 --- a/interpreter/syntax/mnemonics.ml +++ b/interpreter/syntax/mnemonics.ml @@ -170,7 +170,7 @@ let memory_init x y = MemoryInit (x, y) let data_drop x = DataDrop x let ref_is_null = RefIsNull -let ref_as_non_null = RefAsNonNull +let ref_as_non_null = RefAsNonNull let ref_test t = RefTest t let ref_cast t = RefCast t let ref_eq = RefEq @@ -585,3 +585,8 @@ let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) let i16x8_relaxed_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) let i32x4_relaxed_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAddS)) + +let i64_add128 = Binary128 Add128 +let i64_sub128 = Binary128 Sub128 +let i64_mul_wide_s = BinaryWide MulS +let i64_mul_wide_u = BinaryWide MulU diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 1ab2c222db..a1ee7bca3b 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -191,6 +191,14 @@ struct | TruncSatF32 sx -> "trunc_sat_f32" ^ ext sx | TruncSatF64 sx -> "trunc_sat_f64" ^ ext sx | ReinterpretFloat -> "reinterpret_f" ^ xx + + let binop128 op = match op with + | Add128 -> "add128" + | Sub128 -> "sub128" + + let binop_wide op = match op with + | MulS -> "mul_wide_s" + | MulU -> "mul_wide_u" end module FloatOp = @@ -591,6 +599,8 @@ let rec instr e = | VecSplat op -> vsplatop op, [] | VecExtract op -> vextractop op, [] | VecReplace op -> vreplaceop op, [] + | Binary128 op -> "i64." ^ (IntOp.binop128 op), [] + | BinaryWide op -> "i64." ^ (IntOp.binop_wide op), [] in Node (head, inner) and catch c = diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index 653c93a5b3..d8fc7fb9ad 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -89,7 +89,7 @@ let character = [^'"''\\''\x00'-'\x1f''\x7f'-'\xff'] | utf8enc | '\\'escape - | '\\'hexdigit hexdigit + | '\\'hexdigit hexdigit | "\\u{" hexnum '}' let nat = num | "0x" hexnum @@ -742,6 +742,11 @@ rule token = parse | "f32x4.replace_lane" -> VEC_REPLACE f32x4_replace_lane | "f64x2.replace_lane" -> VEC_REPLACE f64x2_replace_lane + | "i64.add128" -> BINARY i64_add128 + | "i64.sub128" -> BINARY i64_sub128 + | "i64.mul_wide_s" -> BINARY i64_mul_wide_s + | "i64.mul_wide_u" -> BINARY i64_mul_wide_u + | "i8x16.relaxed_swizzle" -> VEC_BINARY i8x16_relaxed_swizzle | "i32x4.relaxed_trunc_f32x4_u" -> VEC_UNARY i32x4_relaxed_trunc_f32x4_u | "i32x4.relaxed_trunc_f32x4_s" -> VEC_UNARY i32x4_relaxed_trunc_f32x4_s diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 81f822f175..aad7071958 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -623,7 +623,7 @@ let rec check_instr (c : context) (e : instr) (s : infer_resulttype) : infer_ins | TableFill x -> let TableT (at, _lim, rt) = table c x in - [NumT (numtype_of_addrtype at); RefT rt; + [NumT (numtype_of_addrtype at); RefT rt; NumT (numtype_of_addrtype at)] --> [], [] | TableCopy (x, y) -> @@ -951,6 +951,13 @@ let rec check_instr (c : context) (e : instr) (s : infer_resulttype) : infer_ins "invalid lane index"; [t1; t2] --> [t1], [] + | Binary128 _ -> + [NumT I64T; NumT I64T; NumT I64T; NumT I64T] --> [NumT I64T; NumT I64T], [] + + | BinaryWide _ -> + [NumT I64T; NumT I64T] --> [NumT I64T; NumT I64T], [] + + and check_instrs (c : context) (s : infer_resulttype) (es : instr list) : infer_resulttype * idx list = match es with diff --git a/interpreter/wasm.opam b/interpreter/wasm.opam index 9a5057611e..7ebbe9e456 100644 --- a/interpreter/wasm.opam +++ b/interpreter/wasm.opam @@ -12,6 +12,7 @@ depends: [ "dune" {>= "2.9"} "ocaml" {>= "4.12"} "menhir" {>= "20220210"} + "stdint" {>= "0.7.2"} "odoc" {with-doc} ] build: [make "-C" "interpreter"] diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index d5d9538dfc..61fb3d4291 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -1883,6 +1883,10 @@ let rec al_of_instr instr = CaseV ("ARRAY.INIT_ELEM", [ al_of_idx idx1; al_of_idx idx2 ]) | ExternConvert Internalize -> nullary "ANY.CONVERT_EXTERN" | ExternConvert Externalize -> nullary "EXTERN.CONVERT_ANY" + | Binary128 Add128 -> CaseV ("ADD128", []) + | Binary128 Sub128 -> CaseV ("SUB128", []) + | BinaryWide MulS -> CaseV ("MUL_WIDE_S", []) + | BinaryWide MulU -> CaseV ("MUL_WIDE_U", []) (* | _ -> CaseV ("TODO: Unconstructed Wasm instruction (al_of_instr)", []) *) let al_of_const const = al_of_list al_of_instr const.it diff --git a/spectec/src/backend-interpreter/dune-ref-interp b/spectec/src/backend-interpreter/dune-ref-interp index 8ec3c6e35f..ff85541491 100644 --- a/spectec/src/backend-interpreter/dune-ref-interp +++ b/spectec/src/backend-interpreter/dune-ref-interp @@ -3,7 +3,7 @@ (library (name reference_interpreter) (modules :standard \ main) - (libraries menhirLib) + (libraries menhirLib stdint) ) ; For parsing From 6cc1b231b7c11adf7aa82723cdc0dda73f7e2a5a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 18 Sep 2025 13:38:28 -0700 Subject: [PATCH 33/51] Attempt to update spec/spectec for wide arithmetic --- document/core/binary/instructions.rst | 7 +++ document/core/exec/instructions.rst | 16 ++++++- document/core/exec/numerics.rst | 41 +++++++++++++++-- document/core/syntax/instructions.rst | 4 +- document/core/text/instructions.rst | 11 +++++ document/core/util/macros.def | 8 ++++ document/core/valid/instructions.rst | 20 ++++++++ .../wasm-3.0/1.2-syntax.types.spectec | 2 +- .../wasm-3.0/1.3-syntax.instructions.spectec | 10 ++++ .../2.3-validation.instructions.spectec | 6 +++ .../wasm-3.0/3.1-numerics.scalar.spectec | 46 +++++++++++++++++++ .../4.3-execution.instructions.spectec | 9 ++++ .../wasm-3.0/5.3-binary.instructions.spectec | 7 +++ .../wasm-3.0/6.3-text.instructions.spectec | 7 +++ spectec/src/backend-interpreter/construct.ml | 4 ++ 15 files changed, 190 insertions(+), 8 deletions(-) diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst index b3bdbef0ad..c97e4097f1 100644 --- a/document/core/binary/instructions.rst +++ b/document/core/binary/instructions.rst @@ -243,6 +243,13 @@ whereas the actual opcode is encoded by a variable-length :ref:`unsigned integer $${grammar: Binstr/num-cvt-sat} +.. _binary-num-wide: + +wide-arithmetic instructions have a 1-byte prefix and the actual opcode is +encoded by a variable-length :ref:`unsigned integer `. + +$${grammar: Binstr/num-wide} + .. index:: vector instruction pair: binary format; instruction diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 4072665e9b..05c541a407 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -785,7 +785,7 @@ $${rule: {Step_read/struct.get-*}} $${rule-prose: Step/struct.set} $${rule: {Step/struct.set-*}} - + .. _exec-array.new: @@ -973,6 +973,20 @@ $${rule-prose: Step_pure/cvtop} $${rule: {Step_pure/cvtop-*}} +.. _exec-wideop: + +$${rule-prose: Step_pure/wideop} + +$${rule: {Step_pure/wideop}} + + +.. _exec-extwideop: + +$${rule-prose: Step_pure/extwideop} + +$${rule: {Step_pure/extwideop}} + + .. index:: vector instruction pair: execution; instruction single: abstract syntax; instruction diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 6e015ae0ba..b70e0b010d 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -934,6 +934,37 @@ The integer result of predicates -- i.e., :ref:`tests ` and :ref: \iq15mulrsats_N(i_1, i_2) &=& \signed_N^{-1}(\sats_N(\ishrs_N(i_1 \cdot i_2 + 2^{14}, 15))) \end{array} +.. _op-iconcat: + +:math:`\iconcat_{M,N}(i_1, i_2)` +................................. + +* Let :math:`h` be the result of :math:`\ishl_N(\extend^u_{M,N}(i_2), M)` + +* Return the result of :math:`\ior_N(\extend^u_{M,N}(i_1), h)` + +.. math:: + \begin{array}{lll@{\qquad}l} + \iconcat_{M,N}(i_1, i_2) &=& \ior_N(\extend^u_{M,N}(i_1), \ishl_N(\extend^u_{M,N}(i_2), M)) + \end{array} + + +.. _op-isplit: + +:math:`\isplit_{M,N}(i)` +................................. + +* Let :math:`l` be the result of :math:`\wrap_{M,N}(i)` + +* Let :math:`h` be the result of :math:`\wrap_{M,N}(\ishru_M(i, N))` + +* Return :math:`l, h` + +.. math:: + \begin{array}{lll@{\qquad}l} + \isplit_{M,N}(i) &=& \wrap_{M,N}(i), \wrap_{M,N}(\ishru_M(i, N)) + \end{array} + .. index:: floating-point, IEEE 754 .. _float-ops: @@ -1823,9 +1854,9 @@ Conversions :math:`\truncu_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * Else if :math:`z` is a number and :math:`\truncz(z)` is a value within range of the target type, then return that value. @@ -1846,9 +1877,9 @@ Conversions :math:`\truncs_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * If :math:`z` is a number and :math:`\truncz(z)` is a value within range of the target type, then return that value. @@ -2192,7 +2223,7 @@ The previous operators are lifted to operators on arguments of vector type by wr \land~j^\ast = \ivaddpairwise_{N_2}({i'}^\ast) \\ \end{array} \end{array} - + .. _op-vextbinop: diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 478a7199a3..05a39446cd 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -325,6 +325,8 @@ The instructions ${:ANY.CONVERT_EXTERN} and ${:EXTERN.CONVERT_ANY} allow lossles .. _syntax-relop: .. _syntax-cvtop: .. _syntax-instr-numeric: +.. _syntax-wideop: +.. _syntax-extwideop: Numeric Instructions ~~~~~~~~~~~~~~~~~~~~ @@ -332,7 +334,7 @@ Numeric Instructions Numeric instructions provide basic operations over numeric :ref:`values ` of specific :ref:`type `. These operations closely match respective operations available in hardware. -$${syntax: {sz sx} num_ instr/num unop_ binop_ testop_ relop_ cvtop__} +$${syntax: {sz sx} num_ instr/num unop_ binop_ testop_ relop_ cvtop__ wideop_ extwideop_} Numeric instructions are divided by :ref:`number type `. For each type, several subcategories can be distinguished: diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index 6ccd8f84f6..3e7f7a2d9b 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -717,6 +717,17 @@ Numeric Instructions \text{i64.extend32\_s} &\Rightarrow& \I64.\EXTEND\K{32\_s} \\ \end{array} +.. _text-wideop: + +.. math:: + \begin{array}{llclll} + \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& + \text{i64.add128} &\Rightarrow& \I64.\ADD128 \\ &&|& + \text{i64.sub128} &\Rightarrow& \I64.\SUB128 \\ &&|& + \text{i64.mul\_wide\_s} &\Rightarrow& \I64.\MULWIDE\K{\_s} \\ &&|& + \text{i64.mul\_wide\_u} &\Rightarrow& \I64.\MULWIDE\K{\_u} \\ + \end{array} + .. index:: vector instruction pair: text format; instruction diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 7bd9e29ff4..ea11d771c1 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -601,6 +601,10 @@ .. |DEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{demote}} .. |REINTERPRET| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{reinterpret}} +.. |ADD128| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{add128}} +.. |SUB128| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{sub128}} +.. |MULWIDE| mathdef:: \xref{syntax/instructions}{syntax-instr-numeric}{\K{mul\_wide}} + .. |VCONST| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{const}} .. |VSHUFFLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{shuffle}} .. |VSWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{swizzle}} @@ -679,6 +683,8 @@ .. |testop| mathdef:: \xref{syntax/instructions}{syntax-testop}{\X{testop}} .. |relop| mathdef:: \xref{syntax/instructions}{syntax-relop}{\X{relop}} .. |cvtop| mathdef:: \xref{syntax/instructions}{syntax-cvtop}{\X{cvtop}} +.. |wideop| mathdef:: \xref{syntax/instructions}{syntax-wideop}{\X{wideop}} +.. |extwideop| mathdef:: \xref{syntax/instructions}{syntax-extwideop}{\X{extwideop}} .. |unopF| mathdef:: \xref{exec/instructions}{exec-instr-numeric}{\X{unop}} .. |binopF| mathdef:: \xref{exec/instructions}{exec-instr-numeric}{\X{binop}} @@ -1616,6 +1622,8 @@ .. |iavgru| mathdef:: \xref{exec/numerics}{op-iavgr}{\F{iavgr\_u}} .. |iq15mulrsat| mathdef:: \xref{exec/numerics}{op-iq15mulrsat}{\F{iq15mulrsat}} .. |iq15mulrsats| mathdef:: \xref{exec/numerics}{op-iq15mulrsat}{\F{iq15mulrsat\_s}} +.. |isplit| mathdef:: \xref{exec/numerics}{op-isplit}{\F{isplit}} +.. |iconcat| mathdef:: \xref{exec/numerics}{op-iconcat}{\F{iconcat}} .. |fadd| mathdef:: \xref{exec/numerics}{op-fadd}{\F{fadd}} .. |fsub| mathdef:: \xref{exec/numerics}{op-fsub}{\F{fsub}} diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 84579f28a1..a9bd538c3a 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1099,6 +1099,26 @@ $${rule-prose: Instr_ok/cvtop} $${rule: Instr_ok/cvtop} +.. _valid-wideop: + +:math:`t_1\K{.}\wideop` +.......................................... + +$${rule-prose: Instr_ok/wideop} + +$${rule: Instr_ok/wideop} + + +.. _valid-extwideop: + +:math:`t_1\K{.}\extwideop` +.......................................... + +$${rule-prose: Instr_ok/extwideop} + +$${rule: Instr_ok/extwideop} + + .. index:: vector instruction pair: validation; instruction single: abstract syntax; instruction diff --git a/specification/wasm-3.0/1.2-syntax.types.spectec b/specification/wasm-3.0/1.2-syntax.types.spectec index e0ee0b5109..e5faa8b901 100644 --- a/specification/wasm-3.0/1.2-syntax.types.spectec +++ b/specification/wasm-3.0/1.2-syntax.types.spectec @@ -560,7 +560,7 @@ def $free_tagtype(deftype) = $free_deftype(deftype) def $free_globaltype(mut? valtype) = $free_valtype(valtype) def $free_memtype(addrtype limits PAGE) = $free_addrtype(addrtype) - + def $free_tabletype(addrtype limits reftype) = $free_addrtype(addrtype) ++ $free_reftype(reftype) diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index beb7ba2dfd..1b4e8fadcb 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -38,6 +38,14 @@ syntax binop_(Inn) = | AND | OR | XOR | SHL | SHR sx hint(show SHR#_#%) | ROTL | ROTR syntax binop_(Fnn) = | ADD | SUB | MUL | DIV | MIN hint(macro "FMIN") | MAX hint(macro "FMAX") | COPYSIGN +syntax wideop_(numtype) +syntax wideop_(Inn) = + | ADD128 -- if $sizenn(Inn) = 64 + | SUB128 -- if $sizenn(Inn) = 64 + +syntax extwideop_(numtype) +syntax extwideop_(Inn) = + | MUL_WIDE sx hint(show MUL_WIDE#_#%) -- if $sizenn(Inn) = 64 syntax testop_(numtype) syntax testop_(Inn) = EQZ @@ -353,6 +361,8 @@ syntax instr/num hint(desc "numeric instruction") = ... | TESTOP numtype testop_(numtype) hint(show %.##%) | RELOP numtype relop_(numtype) hint(show %.##%) | CVTOP numtype_1 numtype_2 cvtop__(numtype_2, numtype_1) hint(show %1.##%3#_#%2) + | WIDEOP numtype wideop_(numtype) hint(show %.##%) + | EXTWIDEOP numtype extwideop_(numtype) hint(show %.##%) | ... syntax instr/vec hint(desc "vector instruction") = ... diff --git a/specification/wasm-3.0/2.3-validation.instructions.spectec b/specification/wasm-3.0/2.3-validation.instructions.spectec index bfd71e57ff..f92494bf78 100644 --- a/specification/wasm-3.0/2.3-validation.instructions.spectec +++ b/specification/wasm-3.0/2.3-validation.instructions.spectec @@ -527,6 +527,12 @@ rule Instr_ok/relop: rule Instr_ok/cvtop: C |- CVTOP nt_1 nt_2 cvtop : nt_2 -> nt_1 +rule Instr_ok/wideop: + C |- WIDEOP nt wideop_nt : nt nt nt nt -> nt nt + +rule Instr_ok/extwideop: + C |- EXTWIDEOP nt extwideop_nt : nt nt -> nt nt + ;; Vector instructions diff --git a/specification/wasm-3.0/3.1-numerics.scalar.spectec b/specification/wasm-3.0/3.1-numerics.scalar.spectec index 832c219981..6b9141afe1 100644 --- a/specification/wasm-3.0/3.1-numerics.scalar.spectec +++ b/specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -440,3 +440,49 @@ def $cvtop__(Inn_1, Fnn_2, REINTERPRET, i_1) = $reinterpret__(Inn_1, Fnn_2, i_1) -- if $size(Inn_1) = $size(Fnn_2) ;; TODO(3, rossberg): make implicit def $cvtop__(Fnn_1, Inn_2, REINTERPRET, f_1) = $reinterpret__(Fnn_1, Inn_2, f_1) -- if $size(Fnn_1) = $size(Inn_2) ;; TODO(3, rossberg): make implicit + +;; wide-arithmetic helpers and implementation + +def $iconcat_(numtype, N, num_(numtype), num_(numtype)) : iN(N) +def $iconcat_(Inn, N, i_1, i_2) = + $ior_( + N, + $iextend_($sizenn(Inn), N, U, i_1), + $ishl_(N, $iextend_($sizenn(Inn), N, U, i_2), $sizenn(Inn)), + ) + +def $isplit_(numtype, N, iN(N)) : (num_(numtype), num_(numtype)) +def $isplit_(Inn, N, i_1) = ( + $wrap__(N, $sizenn(Inn), i_1), + $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn))), +) + +def $binop128_(numtype, N, wideop_(numtype), iN(N), iN(N)) : iN(N) +def $binop128_(Inn, N, ADD128, i_1, i_2) = $iadd_(N, i_1, i_2) +def $binop128_(Inn, N, SUB128, i_1, i_2) = $isub_(N, i_1, i_2) + +def $wideop__(numtype, wideop_(numtype), num_(numtype), num_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) +def $wideop__(Inn, wideop, i_1, i_2, i_3, i_4) = + $isplit_( + Inn, + 128, + $binop128_( + Inn, + 128, + wideop, + $iconcat_(Inn, 128, i_1, i_2), + $iconcat_(Inn, 128, i_3, i_4), + ) + ) + +def $extwideop__(numtype, extwideop_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) +def $extwideop__(Inn, MUL_WIDE sx, i_1, i_2) = + $isplit_( + Inn, + 128, + $imul_( + 128, + $iextend_($sizenn(Inn), 128, sx, i_1), + $iextend_($sizenn(Inn), 128, sx, i_2), + ) + ) diff --git a/specification/wasm-3.0/4.3-execution.instructions.spectec b/specification/wasm-3.0/4.3-execution.instructions.spectec index 5c7a706634..681c3c2639 100644 --- a/specification/wasm-3.0/4.3-execution.instructions.spectec +++ b/specification/wasm-3.0/4.3-execution.instructions.spectec @@ -972,6 +972,15 @@ rule Step_pure/cvtop-trap: -- if $cvtop__(nt_1, nt_2, cvtop, c_1) = eps +rule Step_pure/wideop: + (CONST nt c_1) (CONST nt c_2) (CONST nt c_3) (CONST nt c_4) (WIDEOP nt wideop_nt) ~> (CONST nt c_5) (CONST nt c_6) + -- if (c_5, c_6) <- $wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4) + +rule Step_pure/extwideop: + (CONST nt c_1) (CONST nt c_2) (EXTWIDEOP nt extwideop_nt) ~> (CONST nt c_5) (CONST nt c_6) + -- if (c_5, c_6) <- $extwideop__(nt, extwideop_nt, c_1, c_2) + + ;; Vector instructions rule Step_pure/vvunop: diff --git a/specification/wasm-3.0/5.3-binary.instructions.spectec b/specification/wasm-3.0/5.3-binary.instructions.spectec index 582fb29e59..47a32501ab 100644 --- a/specification/wasm-3.0/5.3-binary.instructions.spectec +++ b/specification/wasm-3.0/5.3-binary.instructions.spectec @@ -387,6 +387,13 @@ grammar Binstr/num-cvt-sat : instr = ... | 0xFC 7:Bu32 => CVTOP I64 F64 TRUNC_SAT U | ... +grammar Binstr/num-wide : instr = ... + | 0xFC 13:Bu32 => WIDEOP I64 ADD128 + | 0xFC 14:Bu32 => WIDEOP I64 SUB128 + | 0xFC 15:Bu32 => EXTWIDEOP I64 MUL_WIDE S + | 0xFC 16:Bu32 => EXTWIDEOP I64 MUL_WIDE U + | ... + ;; Vector instructions diff --git a/specification/wasm-3.0/6.3-text.instructions.spectec b/specification/wasm-3.0/6.3-text.instructions.spectec index bdc300bf6e..975653056e 100644 --- a/specification/wasm-3.0/6.3-text.instructions.spectec +++ b/specification/wasm-3.0/6.3-text.instructions.spectec @@ -536,6 +536,13 @@ grammar Tplaininstr_(I)/num-cvt-reinterpret : instr = ... | "f64.reinterpret_i64" => CVTOP F64 I64 REINTERPRET | ... +grammar Tplaininstr_(I)/num-wide : instr = ... + | "i64.add128" => WIDEOP I64 ADD128 + | "i64.sub128" => WIDEOP I64 SUB128 + | "i64.mul_wide_s" => EXTWIDEOP I64 MUL_WIDE S + | "i64.mul_wide_u" => EXTWIDEOP I64 MUL_WIDE U + | ... + ;; Vector instructions diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index 61fb3d4291..e0e2886ea9 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -850,6 +850,10 @@ and al_to_instr': value -> Ast.instr' = function ArrayInitElem (al_to_idx idx1, al_to_idx idx2) | CaseV ("ANY.CONVERT_EXTERN", []) -> ExternConvert Internalize | CaseV ("EXTERN.CONVERT_ANY", []) -> ExternConvert Externalize + | CaseV ("ADD128", []) -> Binary128 Add128 + | CaseV ("SUB128", []) -> Binary128 Sub128 + | CaseV ("MUL_WIDE_S", []) -> BinaryWide MulS + | CaseV ("MUL_WIDE_U", []) -> BinaryWide MulU | v -> error_value "instruction" v let al_to_const: value -> const = al_to_list al_to_instr |> al_to_phrase From a35c7fa87ef27ae0a83c47abcff842b23bee6acd Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 18 Sep 2025 14:29:13 -0700 Subject: [PATCH 34/51] Install stdint --- .github/workflows/ci-interpreter.yml | 2 +- .github/workflows/ci-spec.yml | 2 +- .github/workflows/ci-spectec.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 255a2b9929..28013deb9f 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 4.14.x - name: Setup OCaml tools - run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 stdint.0.7.2 + run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 - name: Setup Node.js uses: actions/setup-node@v4 with: diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 24ed6a3e5f..7a4212d42a 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -25,7 +25,7 @@ jobs: with: ocaml-compiler: 4.14.x - name: Setup Dune - run: opam install --yes dune menhir mdx zarith && opam exec dune --version + run: opam install --yes dune menhir mdx zarith stdint.0.7.2 && opam exec dune --version - name: Setup Node.js uses: actions/setup-node@v4 with: diff --git a/.github/workflows/ci-spectec.yml b/.github/workflows/ci-spectec.yml index cb56e2fff8..c92198ae6a 100644 --- a/.github/workflows/ci-spectec.yml +++ b/.github/workflows/ci-spectec.yml @@ -23,7 +23,7 @@ jobs: with: ocaml-compiler: 4.14.x - name: Setup Dune - run: opam install --yes dune menhir mdx zarith + run: opam install --yes dune menhir mdx zarith stdint.0.7.2 - name: Setup Latex run: sudo apt-get update -y && sudo apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended - name: Setup Sphinx From ede598ab9217d7320728a847b5d7a1e075054b67 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 18 Sep 2025 15:39:35 -0700 Subject: [PATCH 35/51] Update `TEST.md` files --- spectec/test-frontend/TEST.md | 857 +++++----- spectec/test-interpreter/TEST.md | 203 ++- spectec/test-latex/TEST.md | 100 ++ spectec/test-middlend/TEST.md | 2573 ++++++++++++++++-------------- spectec/test-prose/TEST.md | 149 ++ spectec/test-splice/TEST.md | 24 + 6 files changed, 2341 insertions(+), 1565 deletions(-) diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 26acafe109..3d2f7b2f7b 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -1634,6 +1634,18 @@ syntax binop_(numtype : numtype) | COPYSIGN +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE{sx : sx}(sx : sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -2140,6 +2152,8 @@ syntax instr = | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) + | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) + | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -2208,227 +2222,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-492.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.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*`})) } @@ -3830,118 +3844,126 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.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*`}))) @@ -4900,6 +4922,33 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -6195,6 +6244,16 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -7679,7 +7738,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.1-808.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -8161,517 +8220,525 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 + prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 + prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:437.5-437.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:502.5-502.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:511.5-511.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:530.5-530.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:544.5-544.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:549.5-549.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:604.5-604.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:609.5-609.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:630.5-630.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:644.5-644.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:648.5-648.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:679.5-679.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:688.5-688.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:692.5-692.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:696.5-696.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:724.5-724.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:791.5-791.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.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))) } @@ -10253,6 +10320,14 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index 6410435a18..f39a4b6ea5 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -1552,7 +1552,208 @@ spectec 0.5 generator ===== ../test-interpreter/spec-test-3/utf8-invalid-encoding.wast ===== - 0/0 (100.00%) -Total [60340/60340] (100.00%) +===== ../test-interpreter/spec-test-3/wide-arithmetic.wast ===== +../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:29.1-32.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:29.1-32.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:33.1-36.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:33.1-36.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:37.1-40.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:37.1-40.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:43.1-46.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:43.1-46.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:47.1-50.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:47.1-50.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:51.1-54.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:51.1-54.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:55.1-58.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:55.1-58.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:61.1-62.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:61.1-62.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:63.1-64.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:63.1-64.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:65.1-66.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:65.1-66.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:67.1-68.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:67.1-68.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:73.1-74.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:73.1-74.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:77.1-80.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:77.1-80.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:81.1-84.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:81.1-84.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:85.1-88.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:85.1-88.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:89.1-92.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:89.1-92.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:93.1-96.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:93.1-96.46 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:97.1-100.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:97.1-100.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:101.1-104.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:101.1-104.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:105.1-108.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:105.1-108.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:109.1-112.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:109.1-112.62 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:113.1-116.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:113.1-116.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:117.1-120.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:117.1-120.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:121.1-124.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:121.1-124.63 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:125.1-128.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:125.1-128.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:129.1-132.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:129.1-132.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:133.1-136.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:133.1-136.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:137.1-140.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:137.1-140.81 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:141.1-144.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:141.1-144.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:145.1-148.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:145.1-148.63 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:149.1-152.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:149.1-152.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:153.1-156.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:153.1-156.62 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:160.1-163.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:160.1-163.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:164.1-167.82 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:164.1-167.82 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:168.1-171.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:168.1-171.62 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:172.1-175.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:172.1-175.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:176.1-179.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:176.1-179.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:180.1-183.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:180.1-183.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:184.1-187.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:184.1-187.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:188.1-191.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:188.1-191.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:192.1-195.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:192.1-195.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:196.1-199.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:196.1-199.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:200.1-203.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:200.1-203.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:204.1-207.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:204.1-207.62 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:208.1-211.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:208.1-211.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:212.1-215.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:212.1-215.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:216.1-219.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:216.1-219.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:220.1-223.80 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:220.1-223.80 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:224.1-227.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:224.1-227.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:228.1-231.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:228.1-231.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:232.1-235.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:232.1-235.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:236.1-239.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:236.1-239.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:242.1-243.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:242.1-243.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:244.1-245.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:244.1-245.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:250.1-251.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:250.1-251.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:256.1-257.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:256.1-257.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:266.1-267.61 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:266.1-267.61 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:268.1-269.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:268.1-269.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:274.1-275.62 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:274.1-275.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:280.1-281.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:280.1-281.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:284.1-285.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:284.1-285.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:286.1-287.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:286.1-287.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:288.1-289.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:288.1-289.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:290.1-291.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:290.1-291.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:292.1-293.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:292.1-293.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:294.1-295.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:294.1-295.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:296.1-297.61 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:296.1-297.61 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:298.1-299.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:298.1-299.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:300.1-301.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:300.1-301.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:302.1-303.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:302.1-303.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:304.1-305.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:304.1-305.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:306.1-307.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:306.1-307.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:308.1-309.63 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:308.1-309.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:310.1-311.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:310.1-311.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:312.1-313.80 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:312.1-313.80 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:314.1-315.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:314.1-315.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:316.1-317.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:316.1-317.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:318.1-319.81 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:318.1-319.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:320.1-321.45 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:320.1-321.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:322.1-323.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:322.1-323.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:385.1-388.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:385.1-388.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:389.1-392.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:389.1-392.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +../test-interpreter/spec-test-3/wide-arithmetic.wast:395.1-396.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:395.1-396.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) +- 12/111 (10.81%) + +Total [60352/60451] (99.84%) == Complete. ``` diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index b1cbbc13b7..813cb7641f 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -3703,6 +3703,19 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {{\mathit{wideop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{add{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ +& & | & \mathsf{sub{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {{\mathit{extwideop}}}_{{\mathsf{i}}{N}} & ::= & {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N = 64 \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{testop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{eqz} \\ @@ -3999,6 +4012,8 @@ $$ & & | & {\mathit{numtype}}~{.}~{{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}~{.}~{{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {{\mathit{numtype}}_1~{.}~{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ +& & | & {\mathit{numtype}}~{.}~{{\mathit{wideop}}}_{{\mathit{numtype}}} \\ +& & | & {\mathit{numtype}}~{.}~{{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ & & | & {\mathit{vectype}}~{.}~{\mathit{vvunop}} \\ & & | & {\mathit{vectype}}~{.}~{\mathit{vvbinop}} \\ @@ -6996,6 +7011,26 @@ C \vdash {{\mathit{nt}}_1~{.}~{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2} : \end{array} $$ +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +C \vdash {\mathit{nt}}~{.}~{\mathit{wideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} +} \, {[\textsc{\scriptsize T{-}wideop}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +C \vdash {\mathit{nt}}~{.}~{\mathit{extwideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} +} \, {[\textsc{\scriptsize T{-}extwideop}]} +\qquad +\end{array} +$$ + \vspace{1ex} $$ @@ -8305,6 +8340,54 @@ $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(N, i_1, i_2) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{ior}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_1)}, {{\mathrm{ishl}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_2)}, N)) \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(N, i_1) & = & ({{\mathrm{wrap}}}_{N, N}(i_1), {{\mathrm{wrap}}}_{N, N}({{\mathrm{ishr}}}{\mathsf{u}}{{}_{N}(i_1, N)})) \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(N, \mathsf{add{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{iadd}}}_{N}(i_1, i_2) \\ +{{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(N, \mathsf{sub{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{isub}}}_{N}(i_1, i_2) \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4))) \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_2)})) \\ +\end{array} +} \\ +\end{array} +$$ + +\vspace{1ex} + $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \epsilon \\ @@ -10701,6 +10784,15 @@ $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lrcl@{}l@{}} +{[\textsc{\scriptsize E{-}wideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}}{.}\mathsf{const}~c_3)~({\mathit{nt}}{.}\mathsf{const}~c_4)~({\mathit{nt}}~{.}~{\mathit{wideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4) \\ +{[\textsc{\scriptsize E{-}extwideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}}~{.}~{\mathit{extwideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2) \\ +\end{array} +$$ + +\vspace{1ex} + $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}vvunop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}}~{.}~{\mathit{vvunop}}) & \hookrightarrow & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) & \quad \mbox{if}~ c \in {{\mathit{vvunop}}}{{}_{\mathsf{v{\scriptstyle 128}}}(c_1)} \\ @@ -11720,6 +11812,10 @@ $$ & & | & \mathtt{0xFC}~~5{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 64}}~{.}~\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mathtt{0xFC}~~6{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 64}}~{.}~\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mathtt{0xFC}~~7{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 64}}~{.}~\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ +& & | & \mathtt{0xFC}~~13{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{add{\scriptstyle 128}} \\ +& & | & \mathtt{0xFC}~~14{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{sub{\scriptstyle 128}} \\ +& & | & \mathtt{0xFC}~~15{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{mul\_wide} \\ +& & | & \mathtt{0xFC}~~16{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{mul\_wide} \\ & & | & \dots \\ \end{array} $$ @@ -13163,6 +13259,10 @@ $$ & & | & \mbox{‘}\mathtt{i64.reinterpret\_f64}\mbox{’} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 64}}~{.}~\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mbox{‘}\mathtt{f32.reinterpret\_i32}\mbox{’} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 32}}~{.}~\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ & & | & \mbox{‘}\mathtt{f64.reinterpret\_i64}\mbox{’} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 64}}~{.}~\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ +& & | & \mbox{‘}\mathtt{i64.add128}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{add{\scriptstyle 128}} \\ +& & | & \mbox{‘}\mathtt{i64.sub128}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{sub{\scriptstyle 128}} \\ +& & | & \mbox{‘}\mathtt{i64.mul\_wide\_s}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{mul\_wide} \\ +& & | & \mbox{‘}\mathtt{i64.mul\_wide\_u}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}~{.}~\mathsf{mul\_wide} \\ & & | & \dots \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index eeb1e08a08..7b582ea79a 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -1624,6 +1624,18 @@ syntax binop_(numtype : numtype) | COPYSIGN +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE{sx : sx}(sx : sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -2130,6 +2142,8 @@ syntax instr = | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) + | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) + | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -2198,227 +2212,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-492.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.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*`})) } @@ -3820,118 +3834,126 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.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*`}))) @@ -4890,6 +4912,33 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -6185,6 +6234,16 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -7669,7 +7728,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.1-808.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -8151,517 +8210,525 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 + prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 + prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:437.5-437.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:502.5-502.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:511.5-511.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:530.5-530.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:544.5-544.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:549.5-549.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:604.5-604.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:609.5-609.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:630.5-630.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:644.5-644.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:648.5-648.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:679.5-679.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:688.5-688.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:692.5-692.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:696.5-696.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:724.5-724.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:791.5-791.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.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))) } @@ -10243,6 +10310,14 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) @@ -12965,6 +13040,18 @@ syntax binop_(numtype : numtype) | COPYSIGN +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE{sx : sx}(sx : sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -13471,6 +13558,8 @@ syntax instr = | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) + | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) + | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -13539,227 +13628,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-492.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.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*`})) } @@ -15161,118 +15250,126 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.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*`}))) @@ -16231,6 +16328,33 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -17528,6 +17652,16 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -19012,7 +19146,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.1-808.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -19494,517 +19628,525 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 + prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 + prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:437.5-437.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:502.5-502.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:511.5-511.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:530.5-530.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:544.5-544.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:549.5-549.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:604.5-604.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:609.5-609.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:630.5-630.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:644.5-644.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:648.5-648.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:679.5-679.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:688.5-688.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:692.5-692.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:696.5-696.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:724.5-724.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:791.5-791.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.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))) } @@ -21586,6 +21728,14 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) @@ -24308,6 +24458,18 @@ syntax binop_(numtype : numtype) | COPYSIGN +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE{sx : sx}(sx : sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -24814,6 +24976,8 @@ syntax instr = | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) + | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) + | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) @@ -24882,227 +25046,227 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:417.1-417.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:429.1-429.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:430.1-430.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:433.1-433.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:434.1-434.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:435.1-436.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-441.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-445.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-447.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-452.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-454.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:455.1-455.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-469.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:470.1-470.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-482.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-492.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-484.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-494.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-486.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-496.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-498.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-490.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-500.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.62 def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-515.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-517.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-523.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-537.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-545.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-547.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:548.1-548.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-551.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-553.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-559.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-569.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:418.1-418.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.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*`})) } @@ -26605,104 +26769,112 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:536.1-537.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-574.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:576.1-577.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:579.1-581.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-585.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-588.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:609.1-613.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) @@ -26712,14 +26884,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-3.0/2.3-validation.instructions.spectec:615.1-619.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.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*`}))) @@ -27698,6 +27870,33 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -29007,6 +29206,18 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if (|[$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]| > 0) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if (|[$extwideop__(nt, extwideop_nt, c_1, c_2)]| > 0) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -30534,7 +30745,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.1-808.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -31016,517 +31227,525 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 + prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 + prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:437.5-437.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:502.5-502.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:511.5-511.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:530.5-530.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:544.5-544.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:549.5-549.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:604.5-604.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:609.5-609.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:630.5-630.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:644.5-644.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:648.5-648.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:679.5-679.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:688.5-688.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:692.5-692.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:696.5-696.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:724.5-724.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:791.5-791.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.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))) } @@ -33108,6 +33327,14 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index acec4ff041..f225463ab0 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -16136,6 +16136,16 @@ The instruction :math:`({{\mathit{nt}}_1~{.}~{\mathit{cvtop}}}{\mathsf{\_}}{{\ma +The instruction :math:`({\mathit{nt}}~{.}~{\mathit{wideop}}_{\mathit{nt}})` is :ref:`valid ` with the instruction type :math:`{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}~{\mathit{nt}}`. + + + + +The instruction :math:`({\mathit{nt}}~{.}~{\mathit{extwideop}}_{\mathit{nt}})` is :ref:`valid ` with the instruction type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}~{\mathit{nt}}`. + + + + The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)` is :ref:`valid ` with the instruction type :math:`\epsilon~\rightarrow~\mathsf{v{\scriptstyle 128}}`. @@ -18621,6 +18631,56 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Push the value :math:`({\mathit{nt}}_2{.}\mathsf{const}~c)` to the stack. +:math:`{\mathit{nt}}~{.}~{\mathit{wideop}}_{\mathit{nt}}` +......................................................... + + +1. Assert: Due to validation, a value of number type :math:`{\mathit{nt}}` is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_4)` from the stack. + +#. Assert: Due to validation, a number value is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_3)` from the stack. + +#. Assert: Due to validation, a number value is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_2)` from the stack. + +#. Assert: Due to validation, a number value is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_1)` from the stack. + +#. Assert: Due to validation, :math:`{|{{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4)|} > 0`. + +#. Let :math:`(c_5, c_6)` be the destructuring of an element of :math:`{{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4)`. + +#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_5)` to the stack. + +#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_6)` to the stack. + + +:math:`{\mathit{nt}}~{.}~{\mathit{extwideop}}_{\mathit{nt}}` +............................................................ + + +1. Assert: Due to validation, a value of number type :math:`{\mathit{nt}}` is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_2)` from the stack. + +#. Assert: Due to validation, a number value is on the top of the stack. + +#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_1)` from the stack. + +#. Assert: Due to validation, :math:`{|{{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2)|} > 0`. + +#. Let :math:`(c_5, c_6)` be the destructuring of an element of :math:`{{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2)`. + +#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_5)` to the stack. + +#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_6)` to the stack. + + :math:`\mathsf{v{\scriptstyle 128}}~{.}~{\mathit{vvunop}}` .......................................................... @@ -24314,6 +24374,47 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{numtype}}, {\mathit{numtype}'}}(i_1)`. +:math:`{{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(N, i_1, i_2)` +........................................................... + + +1. Return :math:`{{\mathrm{ior}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_1)}, {{\mathrm{ishl}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_2)}, N))`. + + +:math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(N, i_1)` +..................................................... + + +1. Return :math:`({{\mathrm{wrap}}}_{N, N}(i_1), {{\mathrm{wrap}}}_{N, N}({{\mathrm{ishr}}}{\mathsf{u}}{{}_{N}(i_1, N)}))`. + + +:math:`{{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(N, {\mathit{wideop}}, i_1, i_2)` +......................................................................................................... + + +1. If :math:`{\mathit{wideop}} = \mathsf{add{\scriptstyle 128}}`, then: + + a. Return :math:`{{\mathrm{iadd}}}_{N}(i_1, i_2)`. + +#. Assert: Due to validation, :math:`{\mathit{wideop}} = \mathsf{sub{\scriptstyle 128}}`. + +#. Return :math:`{{\mathrm{isub}}}_{N}(i_1, i_2)`. + + +:math:`{{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4)` +.................................................................................... + + +1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4)))`. + + +:math:`{{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2)` +............................................................................................................ + + +1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_2)}))`. + + :math:`{\mathrm{zeroop}}({{\mathit{lanetype}'}}{\mathsf{x}}{M_1}, {{\mathit{lanetype}}}{\mathsf{x}}{M_2}, {\mathit{vcvtop}})` ............................................................................................................................. @@ -27940,6 +28041,12 @@ Instr_ok/relop Instr_ok/cvtop - the instruction (CVTOP nt_1 nt_2 cvtop) is valid with the instruction type [nt_2] -> [nt_1]. +Instr_ok/wideop +- the instruction (WIDEOP nt wideop_nt) is valid with the instruction type [nt, nt, nt, nt] -> [nt, nt]. + +Instr_ok/extwideop +- the instruction (EXTWIDEOP nt extwideop_nt) is valid with the instruction type [nt, nt] -> [nt, nt]. + Instr_ok/vconst - the instruction (V128.CONST c) is valid with the instruction type [] -> [V128]. @@ -29186,6 +29293,30 @@ Step_pure/cvtop nt_2 nt_1 cvtop 4. Let c be an element of $cvtop__(nt_1, nt_2, cvtop, c_1). 5. Push the value (nt_2.CONST c) to the stack. +Step_pure/wideop nt wideop_nt +1. Assert: Due to validation, a value of value type nt is on the top of the stack. +2. Pop the value (numtype_0.CONST c_4) from the stack. +3. Assert: Due to validation, a value of value type num is on the top of the stack. +4. Pop the value (numtype_0.CONST c_3) from the stack. +5. Assert: Due to validation, a value of value type num is on the top of the stack. +6. Pop the value (numtype_0.CONST c_2) from the stack. +7. Assert: Due to validation, a value of value type num is on the top of the stack. +8. Pop the value (numtype_0.CONST c_1) from the stack. +9. Assert: Due to validation, (|[$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]| > 0). +10. Let (c_5, c_6) be an element of [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]. +11. Push the value (nt.CONST c_5) to the stack. +12. Push the value (nt.CONST c_6) to the stack. + +Step_pure/extwideop nt extwideop_nt +1. Assert: Due to validation, a value of value type nt is on the top of the stack. +2. Pop the value (numtype_0.CONST c_2) from the stack. +3. Assert: Due to validation, a value of value type num is on the top of the stack. +4. Pop the value (numtype_0.CONST c_1) from the stack. +5. Assert: Due to validation, (|[$extwideop__(nt, extwideop_nt, c_1, c_2)]| > 0). +6. Let (c_5, c_6) be an element of [$extwideop__(nt, extwideop_nt, c_1, c_2)]. +7. Push the value (nt.CONST c_5) to the stack. +8. Push the value (nt.CONST c_6) to the stack. + Step_pure/vvunop V128 vvunop 1. Assert: Due to validation, a value of value type V128 is on the top of the stack. 2. Pop the value (V128.CONST c_1) from the stack. @@ -31866,6 +31997,24 @@ cvtop__ numtype numtype' cvtop__ i_1 9. Assert: Due to validation, ($size(numtype) = $size(numtype')). 10. Return [$reinterpret__(numtype, numtype', i_1)]. +iconcat_ Inn N i_1 i_2 +1. Return $ior_(N, $iextend_($sizenn(Inn), N, U, i_1), $ishl_(N, $iextend_($sizenn(Inn), N, U, i_2), $sizenn(Inn))). + +isplit_ Inn N i_1 +1. Return ($wrap__(N, $sizenn(Inn), i_1), $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn)))). + +binop128_ Inn N wideop_ i_1 i_2 +1. If (wideop_ = ADD128), then: + a. Return $iadd_(N, i_1, i_2). +2. Assert: Due to validation, (wideop_ = SUB128). +3. Return $isub_(N, i_1, i_2). + +wideop__ Inn wideop i_1 i_2 i_3 i_4 +1. Return $isplit_(Inn, 128, $binop128_(Inn, 128, wideop, $iconcat_(Inn, 128, i_1, i_2), $iconcat_(Inn, 128, i_3, i_4))). + +extwideop__ Inn (MUL_WIDE sx) i_1 i_2 +1. Return $isplit_(Inn, 128, $imul_(128, $iextend_($sizenn(Inn), 128, sx, i_1), $iextend_($sizenn(Inn), 128, sx, i_2))). + zeroop lanetype' X M_1 lanetype X M_2 vcvtop__ 1. If lanetype' is Jnn, then: a. If (lanetype is Jnn /\ vcvtop__ is some EXTEND), then: diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index f16e5680be..f92c8f01bc 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -72,6 +72,8 @@ $$ & & | & {\mathit{numtype}}~{.}~{{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}~{.}~{{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {{\mathit{numtype}}_1~{.}~{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ +& & | & {\mathit{numtype}}~{.}~{{\mathit{wideop}}}_{{\mathit{numtype}}} \\ +& & | & {\mathit{numtype}}~{.}~{{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & \mathsf{local{.}get}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}set}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}tee}~{\mathit{localidx}} \\ @@ -340,6 +342,7 @@ warning: syntax `export` was never spliced warning: syntax `exportinst` was never spliced warning: syntax `externaddr` was never spliced warning: syntax `externidx` was never spliced +warning: syntax `extwideop_` was never spliced warning: syntax `f32` was never spliced warning: syntax `f64` was never spliced warning: syntax `fN` was never spliced @@ -511,6 +514,7 @@ warning: syntax `vvbinop` was never spliced warning: syntax `vvternop` was never spliced warning: syntax `vvtestop` was never spliced warning: syntax `vvunop` was never spliced +warning: syntax `wideop_` was never spliced warning: syntax `zero` was never spliced warning: grammar `Babsheaptype` was never spliced warning: grammar `Bblocktype` was never spliced @@ -583,6 +587,7 @@ warning: grammar `Binstr/num-un-f64` was never spliced warning: grammar `Binstr/num-bin-f64` was never spliced warning: grammar `Binstr/num-cvt` was never spliced warning: grammar `Binstr/num-cvt-sat` was never spliced +warning: grammar `Binstr/num-wide` was never spliced warning: grammar `Binstr/vec-memory` was never spliced warning: grammar `Binstr/vec-const` was never spliced warning: grammar `Binstr/vec-shuffle` was never spliced @@ -839,6 +844,7 @@ warning: grammar `Tplaininstr_/num-cvt-i64` was never spliced warning: grammar `Tplaininstr_/num-cvt-f32` was never spliced warning: grammar `Tplaininstr_/num-cvt-f64` was never spliced warning: grammar `Tplaininstr_/num-cvt-reinterpret` was never spliced +warning: grammar `Tplaininstr_/num-wide` was never spliced warning: grammar `Tplaininstr_/vec-const` was never spliced warning: grammar `Tplaininstr_/vec-shuffle` was never spliced warning: grammar `Tplaininstr_/vec-splat` was never spliced @@ -1120,6 +1126,8 @@ warning: rule `Instr_ok/binop` was never spliced warning: rule `Instr_ok/testop` was never spliced warning: rule `Instr_ok/relop` was never spliced warning: rule `Instr_ok/cvtop` was never spliced +warning: rule `Instr_ok/wideop` was never spliced +warning: rule `Instr_ok/extwideop` was never spliced warning: rule `Instr_ok/vconst` was never spliced warning: rule `Instr_ok/vvunop` was never spliced warning: rule `Instr_ok/vvbinop` was never spliced @@ -1270,6 +1278,8 @@ warning: rule `Step_pure/testop` was never spliced warning: rule `Step_pure/relop` was never spliced warning: rule `Step_pure/cvtop-val` was never spliced warning: rule `Step_pure/cvtop-trap` was never spliced +warning: rule `Step_pure/wideop` was never spliced +warning: rule `Step_pure/extwideop` was never spliced warning: rule `Step_pure/vvunop` was never spliced warning: rule `Step_pure/vvbinop` was never spliced warning: rule `Step_pure/vvternop` was never spliced @@ -1486,6 +1496,7 @@ warning: definition `alloctypes` was never spliced warning: definition `arrayinst` was never spliced warning: definition `as_deftype` was never spliced warning: definition `before` was never spliced +warning: definition `binop128_` was never spliced warning: definition `binop_` was never spliced warning: definition `blocktype_` was never spliced warning: definition `bool` was never spliced @@ -1526,6 +1537,7 @@ warning: definition `expanddt` was never spliced warning: definition `expon` was never spliced warning: definition `exportsd` was never spliced warning: definition `extend__` was never spliced +warning: definition `extwideop__` was never spliced warning: definition `fabs_` was never spliced warning: definition `fadd_` was never spliced warning: definition `fbits_` was never spliced @@ -1649,6 +1661,7 @@ warning: definition `ibits_` was never spliced warning: definition `ibitselect_` was never spliced warning: definition `ibytes_` was never spliced warning: definition `iclz_` was never spliced +warning: definition `iconcat_` was never spliced warning: definition `ictz_` was never spliced warning: definition `idiv_` was never spliced warning: definition `ieee_` was never spliced @@ -1705,6 +1718,7 @@ warning: definition `is_packtype` was never spliced warning: definition `ishl_` was never spliced warning: definition `ishr_` was never spliced warning: definition `isize` was never spliced +warning: definition `isplit_` was never spliced warning: definition `isub_` was never spliced warning: definition `isub_sat_` was never spliced warning: definition `iswizzle_lane_` was never spliced @@ -1869,6 +1883,7 @@ warning: definition `vunpack` was never spliced warning: definition `vvbinop_` was never spliced warning: definition `vvternop_` was never spliced warning: definition `vvunop_` was never spliced +warning: definition `wideop__` was never spliced warning: definition `with_array` was never spliced warning: definition `with_data` was never spliced warning: definition `with_elem` was never spliced @@ -2024,6 +2039,7 @@ warning: rule prose `Instr_ok/data.drop` was never spliced warning: rule prose `Instr_ok/drop` was never spliced warning: rule prose `Instr_ok/elem.drop` was never spliced warning: rule prose `Instr_ok/extern.convert_any` was never spliced +warning: rule prose `Instr_ok/extwideop` was never spliced warning: rule prose `Instr_ok/global.get` was never spliced warning: rule prose `Instr_ok/global.set` was never spliced warning: rule prose `Instr_ok/i31.get` was never spliced @@ -2107,6 +2123,7 @@ warning: rule prose `Instr_ok/vvbinop` was never spliced warning: rule prose `Instr_ok/vvternop` was never spliced warning: rule prose `Instr_ok/vvtestop` was never spliced warning: rule prose `Instr_ok/vvunop` was never spliced +warning: rule prose `Instr_ok/wideop` was never spliced warning: rule prose `Instrs_ok` was never spliced warning: rule prose `Instrs_ok/empty` was never spliced warning: rule prose `Instrs_ok/frame` was never spliced @@ -2186,6 +2203,7 @@ warning: rule prose `Step_pure/call_indirect` was never spliced warning: rule prose `Step_pure/cvtop` was never spliced warning: rule prose `Step_pure/drop` was never spliced warning: rule prose `Step_pure/extern.convert_any` was never spliced +warning: rule prose `Step_pure/extwideop` was never spliced warning: rule prose `Step_pure/frame` was never spliced warning: rule prose `Step_pure/handler` was never spliced warning: rule prose `Step_pure/i31.get` was never spliced @@ -2225,6 +2243,7 @@ warning: rule prose `Step_pure/vvbinop` was never spliced warning: rule prose `Step_pure/vvternop` was never spliced warning: rule prose `Step_pure/vvtestop` was never spliced warning: rule prose `Step_pure/vvunop` was never spliced +warning: rule prose `Step_pure/wideop` was never spliced warning: rule prose `Step_read/array.copy` was never spliced warning: rule prose `Step_read/array.fill` was never spliced warning: rule prose `Step_read/array.get` was never spliced @@ -2358,6 +2377,7 @@ warning: definition prose `alloctypes` was never spliced warning: definition prose `arrayinst` was never spliced warning: definition prose `as_deftype` was never spliced warning: definition prose `before` was never spliced +warning: definition prose `binop128_` was never spliced warning: definition prose `binop_` was never spliced warning: definition prose `blocktype_` was never spliced warning: definition prose `bool` was never spliced @@ -2394,6 +2414,7 @@ warning: definition prose `exninst` was never spliced warning: definition prose `expanddt` was never spliced warning: definition prose `expon` was never spliced warning: definition prose `exportsd` was never spliced +warning: definition prose `extwideop__` was never spliced warning: definition prose `fnat` was never spliced warning: definition prose `fone` was never spliced warning: definition prose `frame` was never spliced @@ -2484,6 +2505,7 @@ warning: definition prose `halfop` was never spliced warning: definition prose `iabs_` was never spliced warning: definition prose `iadd_` was never spliced warning: definition prose `iadd_sat_` was never spliced +warning: definition prose `iconcat_` was never spliced warning: definition prose `idiv_` was never spliced warning: definition prose `ieq_` was never spliced warning: definition prose `ieqz_` was never spliced @@ -2515,6 +2537,7 @@ warning: definition prose `irelaxed_swizzle_lane_` was never spliced warning: definition prose `irem_` was never spliced warning: definition prose `is_packtype` was never spliced warning: definition prose `isize` was never spliced +warning: definition prose `isplit_` was never spliced warning: definition prose `isub_` was never spliced warning: definition prose `isub_sat_` was never spliced warning: definition prose `iswizzle_lane_` was never spliced @@ -2668,6 +2691,7 @@ warning: definition prose `vunpack` was never spliced warning: definition prose `vvbinop_` was never spliced warning: definition prose `vvternop_` was never spliced warning: definition prose `vvunop_` was never spliced +warning: definition prose `wideop__` was never spliced warning: definition prose `with_array` was never spliced warning: definition prose `with_data` was never spliced warning: definition prose `with_elem` was never spliced From 12e3362b37347b05893906c9e57c1d40a8deb434 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 18 Sep 2025 17:18:58 -0700 Subject: [PATCH 36/51] Refactoring and attempting to make progress --- interpreter/binary/encode.ml | 14 ++++-- interpreter/exec/eval.ml | 8 +-- interpreter/exec/eval_num.ml | 27 ++++++---- interpreter/exec/eval_num.mli | 4 +- interpreter/syntax/ast.ml | 22 +++++--- interpreter/syntax/free.ml | 2 +- interpreter/syntax/mnemonics.ml | 8 +-- interpreter/text/arrange.ml | 42 +++++++++++++--- interpreter/valid/valid.ml | 10 ++-- spectec/doc/example/output/NanoWasm.html | 4 +- spectec/doc/example/output/NanoWasm.pdf | Bin 245508 -> 245513 bytes spectec/src/backend-interpreter/construct.ml | 50 ++++++++++++++++--- 12 files changed, 139 insertions(+), 52 deletions(-) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 0564fb1f9d..58d956e724 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -902,10 +902,16 @@ struct | VecReplace (V128 (F32x4 V128Op.(Replace i))) -> vecop 0x20l; u8 i | VecReplace (V128 (F64x2 V128Op.(Replace i))) -> vecop 0x22l; u8 i - | Binary128 Add128 -> op 0xfc; u32 0x13l - | Binary128 Sub128 -> op 0xfc; u32 0x14l - | BinaryWide MulS -> op 0xfc; u32 0x15l - | BinaryWide MulU -> op 0xfc; u32 0x16l + | Wide (I64 I64Op.Add128) -> op 0xfc; u32 0x13l + | Wide (I64 I64Op.Sub128) -> op 0xfc; u32 0x14l + | Wide (I32 _) -> . + | Wide (F32 _) -> . + | Wide (F64 _) -> . + | Extwide (I64 (I64Op.MulWide S)) -> op 0xfc; u32 0x15l + | Extwide (I64 (I64Op.MulWide U)) -> op 0xfc; u32 0x16l + | Extwide (I32 _) -> . + | Extwide (F32 _) -> . + | Extwide (F64 _) -> . and catch c = match c.it with diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 7642f4cc7d..04b36556e8 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -1025,12 +1025,12 @@ let rec step (c : config) : config = (try Vec (Eval_vec.eval_vreplaceop replaceop v r) :: vs', [] with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) - | Binary128 op, Num rhs_hi :: Num rhs_lo :: Num lhs_hi :: Num lhs_lo :: vs' -> - let (lo, hi) = Eval_num.eval_binop128 op lhs_lo lhs_hi rhs_lo rhs_hi + | Wide op, Num rhs_hi :: Num rhs_lo :: Num lhs_hi :: Num lhs_lo :: vs' -> + let (lo, hi) = Eval_num.eval_wideop op lhs_lo lhs_hi rhs_lo rhs_hi in Num hi :: Num lo :: vs', [] - | BinaryWide op, Num rhs :: Num lhs :: vs' -> - let (lo, hi) = Eval_num.eval_binop_wide op lhs rhs + | Extwide op, Num rhs :: Num lhs :: vs' -> + let (lo, hi) = Eval_num.eval_extwideop op lhs rhs in Num hi :: Num lo :: vs', [] | _ -> diff --git a/interpreter/exec/eval_num.ml b/interpreter/exec/eval_num.ml index 5a913ee60b..4cba1a97be 100644 --- a/interpreter/exec/eval_num.ml +++ b/interpreter/exec/eval_num.ml @@ -56,24 +56,30 @@ struct in fun v1 v2 -> f (of_num 1 v1) (of_num 2 v2) end -module I32Op = IntOp (I32) (I32Num) +module I32Op = struct + include IntOp (I32) (I32Num) + + let wideop (op: Ast.I32Op.wideop) = match op with _ -> . + let extwideop (op: Ast.I32Op.extwideop) = match op with _ -> . +end module I64Op = struct include IntOp (I64) (I64Num) + open Ast.IntOp open I64Num - let binop128 op = + let wideop op = let f = match op with - | Ast.Add128 -> I64.add128 - | Ast.Sub128 -> I64.sub128 + | Ast.I64Op.Add128 -> I64.add128 + | Ast.I64Op.Sub128 -> I64.sub128 in fun v1 v2 v3 v4 -> let (a, b) = f (of_num 1 v1) (of_num 2 v2) (of_num 3 v3) (of_num 4 v4) in (to_num a, to_num b) - let binop_wide op = + let extwideop op = let f = match op with - | Ast.MulS -> I64.mul_wide_s - | Ast.MulU -> I64.mul_wide_u + | Ast.I64Op.MulWide S -> I64.mul_wide_s + | Ast.I64Op.MulWide U -> I64.mul_wide_u in fun v1 v2 -> let (a, b) = f (of_num 1 v1) (of_num 2 v2) in (to_num a, to_num b) @@ -121,6 +127,9 @@ struct | Gt -> FXX.gt | Ge -> FXX.ge in fun v1 v2 -> f (of_num 1 v1) (of_num 2 v2) + + let wideop (op: Ast.FloatOp.wideop) = match op with _ -> . + let extwideop (op: Ast.FloatOp.extwideop) = match op with _ -> . end module F32Op = FloatOp (F32) (F32Num) @@ -215,5 +224,5 @@ let eval_binop = op I32Op.binop I64Op.binop F32Op.binop F64Op.binop let eval_testop = op I32Op.testop I64Op.testop F32Op.testop F64Op.testop let eval_relop = op I32Op.relop I64Op.relop F32Op.relop F64Op.relop let eval_cvtop = op I32CvtOp.cvtop I64CvtOp.cvtop F32CvtOp.cvtop F64CvtOp.cvtop -let eval_binop128 = I64Op.binop128 -let eval_binop_wide = I64Op.binop_wide +let eval_wideop = op I32Op.wideop I64Op.wideop F32Op.wideop F64Op.wideop +let eval_extwideop = op I32Op.extwideop I64Op.extwideop F32Op.extwideop F64Op.extwideop diff --git a/interpreter/exec/eval_num.mli b/interpreter/exec/eval_num.mli index d7ebf4baa7..66800b42b9 100644 --- a/interpreter/exec/eval_num.mli +++ b/interpreter/exec/eval_num.mli @@ -5,5 +5,5 @@ val eval_binop : Ast.binop -> num -> num -> num val eval_testop : Ast.testop -> num -> bool val eval_relop : Ast.relop -> num -> num -> bool val eval_cvtop : Ast.cvtop -> num -> num -val eval_binop128 : Ast.binop128 -> num -> num -> num -> num -> num * num -val eval_binop_wide : Ast.binop_wide -> num -> num -> num * num +val eval_wideop : Ast.wideop -> num -> num -> num -> num -> num * num +val eval_extwideop : Ast.extwideop -> num -> num -> num * num diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index 2128e483e8..adbb4b8c73 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -52,10 +52,20 @@ struct type cvtop = ConvertI32 of sx | ConvertI64 of sx | PromoteF32 | DemoteF64 | ReinterpretInt + type wideop = | + type extwideop = | end -module I32Op = IntOp -module I64Op = IntOp +module I32Op = struct + include IntOp + type wideop = | + type extwideop = | +end +module I64Op = struct + include IntOp + type wideop = Add128 | Sub128 + type extwideop = MulWide of sx +end module F32Op = FloatOp module F64Op = FloatOp @@ -114,8 +124,8 @@ type unop = (I32Op.unop, I64Op.unop, F32Op.unop, F64Op.unop) Value.op type binop = (I32Op.binop, I64Op.binop, F32Op.binop, F64Op.binop) Value.op type relop = (I32Op.relop, I64Op.relop, F32Op.relop, F64Op.relop) Value.op type cvtop = (I32Op.cvtop, I64Op.cvtop, F32Op.cvtop, F64Op.cvtop) Value.op -type binop128 = Add128 | Sub128 -type binop_wide = MulS | MulU +type wideop = (I32Op.wideop, I64Op.wideop, F32Op.wideop, F64Op.wideop) Value.op +type extwideop = (I32Op.extwideop, I64Op.extwideop, F32Op.extwideop, F64Op.extwideop) Value.op type vtestop = (V128Op.testop) Value.vecop type vrelop = (V128Op.relop) Value.vecop @@ -247,8 +257,8 @@ and instr' = | Compare of relop (* numeric comparison *) | Unary of unop (* unary numeric operator *) | Binary of binop (* binary numeric operator *) - | Binary128 of binop128 (* 128-bit operation taking 4 arguments *) - | BinaryWide of binop_wide (* wide-arithmetic binop *) + | Wide of wideop (* binop producing wide result *) + | Extwide of extwideop (* binop producing wide result, extending args *) | Convert of cvtop (* conversion *) | VecConst of vec (* constant *) | VecTest of vtestop (* vector test *) diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index 091d87e485..b5db232eaa 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -182,7 +182,7 @@ let rec instr (e : instr) = | ArrayInitElem (x, y) -> types (idx x) ++ elems (idx y) | ExternConvert _ -> empty | Const _ | Test _ | Compare _ | Unary _ | Binary _ | Convert _ -> empty - | Binary128 _ | BinaryWide _ -> empty + | Wide _ | Extwide _ -> empty | VecConst _ | VecTest _ | VecUnary _ | VecBinary _ | VecTernary _ | VecCompare _ | VecConvert _ | VecShift _ | VecBitmask _ diff --git a/interpreter/syntax/mnemonics.ml b/interpreter/syntax/mnemonics.ml index 13b230cdfe..812d03c5ed 100644 --- a/interpreter/syntax/mnemonics.ml +++ b/interpreter/syntax/mnemonics.ml @@ -586,7 +586,7 @@ let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) let i16x8_relaxed_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) let i32x4_relaxed_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAddS)) -let i64_add128 = Binary128 Add128 -let i64_sub128 = Binary128 Sub128 -let i64_mul_wide_s = BinaryWide MulS -let i64_mul_wide_u = BinaryWide MulU +let i64_add128 = Wide (I64 I64Op.Add128) +let i64_sub128 = Wide (I64 I64Op.Sub128) +let i64_mul_wide_s = Extwide (I64 (I64Op.MulWide S)) +let i64_mul_wide_u = Extwide (I64 (I64Op.MulWide U)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index a1ee7bca3b..e5a2c8da4f 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -191,14 +191,26 @@ struct | TruncSatF32 sx -> "trunc_sat_f32" ^ ext sx | TruncSatF64 sx -> "trunc_sat_f64" ^ ext sx | ReinterpretFloat -> "reinterpret_f" ^ xx +end + +module I32Op = struct + include IntOp + + open Ast.I32Op - let binop128 op = match op with - | Add128 -> "add128" - | Sub128 -> "sub128" + let wideop xx = function (_ : wideop) -> . + let extwideop xx = function (_ : extwideop) -> . +end + +module I64Op = struct + include IntOp - let binop_wide op = match op with - | MulS -> "mul_wide_s" - | MulU -> "mul_wide_u" + let wideop xx = function + | Ast.I64Op.Add128 -> "add128" + | Ast.I64Op.Sub128 -> "sub128" + let extwideop xx = function + | Ast.I64Op.MulWide S -> "mul_wide_s" + | Ast.I64Op.MulWide U -> "mul_wide_u" end module FloatOp = @@ -239,6 +251,9 @@ struct | PromoteF32 -> "promote_f32" | DemoteF64 -> "demote_f64" | ReinterpretInt -> "reinterpret_i" ^ xx + + let wideop xx = function (_ : wideop) -> . + let extwideop xx = function (_ : extwideop) -> . end module V128Op = @@ -409,6 +424,15 @@ let oper (iop, fop) op = | F64 o -> fop "64" o ) +let i64oper (i32op, i64op, fop) op = + string_of_numtype (type_of_num op) ^ "." ^ + (match op with + | I32 o -> i32op "32" o + | I64 o -> i64op "64" o + | F32 o -> fop "32" o + | F64 o -> fop "64" o + ) + let voper (vop) op = match op with | V128 o -> "v128." ^ vop o @@ -422,6 +446,8 @@ let binop = oper (IntOp.binop, FloatOp.binop) let testop = oper (IntOp.testop, FloatOp.testop) let relop = oper (IntOp.relop, FloatOp.relop) let cvtop = oper (IntOp.cvtop, FloatOp.cvtop) +let wideop = i64oper (I32Op.wideop, I64Op.wideop, FloatOp.wideop) +let extwideop = i64oper (I32Op.extwideop, I64Op.extwideop, FloatOp.extwideop) let vunop = shoper (V128Op.iunop, V128Op.iunop, V128Op.funop) let vbinop = shoper (V128Op.ibinop, V128Op.ibinop, V128Op.fbinop) @@ -599,8 +625,8 @@ let rec instr e = | VecSplat op -> vsplatop op, [] | VecExtract op -> vextractop op, [] | VecReplace op -> vreplaceop op, [] - | Binary128 op -> "i64." ^ (IntOp.binop128 op), [] - | BinaryWide op -> "i64." ^ (IntOp.binop_wide op), [] + | Wide op -> wideop op, [] + | Extwide op -> extwideop op, [] in Node (head, inner) and catch c = diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index aad7071958..0f2d12a361 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -951,11 +951,13 @@ let rec check_instr (c : context) (e : instr) (s : infer_resulttype) : infer_ins "invalid lane index"; [t1; t2] --> [t1], [] - | Binary128 _ -> - [NumT I64T; NumT I64T; NumT I64T; NumT I64T] --> [NumT I64T; NumT I64T], [] + | Wide op -> + let t = NumT (type_num op) in + [t; t; t; t] --> [t; t], [] - | BinaryWide _ -> - [NumT I64T; NumT I64T] --> [NumT I64T; NumT I64T], [] + | Extwide op -> + let t = NumT (type_num op) in + [t; t] --> [t; t], [] and check_instrs (c : context) (s : infer_resulttype) (es : instr list) diff --git a/spectec/doc/example/output/NanoWasm.html b/spectec/doc/example/output/NanoWasm.html index 87bda0f629..85948ec48a 100644 --- a/spectec/doc/example/output/NanoWasm.html +++ b/spectec/doc/example/output/NanoWasm.html @@ -7,7 +7,7 @@ NanoWasm — NanoWasm documentation - + @@ -378,7 +378,7 @@

Binary FormatSphinx 8.2.3 + Powered by Sphinx 8.1.3 & Alabaster 1.0.0 | diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 3654be0ac027179d02b20c1576ad2b04deb85a71..146eee6611f7919e144b65c28cabc31cd6d9ad26 100644 GIT binary patch delta 16736 zcmagFQ;a4|7d6_pZR2U1)3!BjP20Agwr$(CZFAb5wr!p7fB%!5%X3kwq_R>Yx(cG4N5bx!aZk>1VP|3U(*pHB#kIyE% z7|dLWanQQWOp`Uj%j2q*u;!AL+}744H5{9__g^oq8n-o9PiYryHkama{*)v6zVrwZ zZM9a<5maHv8Xj|xCxg?joL+pMq`d5tVU(GK`Qg&bbLrDR%SW^7Wb~8QNl=P&(-zz&>dr24a#XJ@t{X1ffCaKuQI3XHk438U;HAQnz3`UKT5hv1EsWz ztr|LowYY^)69cfyWp;WG*0!=?z)5v0oAwR7+1XkJN7)2RixmMK@D?3AR0HzASqCX# zDtM&*&}i>(bL1Ci=_5M|4KF;|r;tO>y2EwN z;ySGMkjOEKhI2g=JoZVB5eS+>@b#(g$s1|qnuNJ>5J!t@5|(!~#MYkZ$RNQBZUYVQ zWKt|arh0bR5%t)P;0Q3I+KcY$V!CO8es|RrxoVaO9yhnmpH7#iLD6p0$?WiCSbc52 z>FgxjRgL}DTBizb{sW#k&$`9VH^BqF*iiZ*!hZ*uuT1&r^EMso4fqi?RM3+l4#Y6Q zwW5U0`7*uWzU|>u86ekjJ^=V`i`C4SHZ#dQdq$S;XAI^BkBt$hFJ>IbxLxaDS4O~#}~ zcoa{Hty3fBJtz!!4b(&C=XV|YK9zxqBi{DwrIF+^m}M++5QyG6f-PjRZy>0W1k%HI zfLvocF3FtD5Nt<21Uj7VaOV`@9KCb)ogNc&{0Yu(l>&xTn@!BI4n8?(>U$rCKqR9# zv)<^Qp9TZ#IYE-|GAz>L8upb~S}>QEd;%@74F_`oiAcqgzK9iliWbn=;eYTYr((b^59M(?=y2C&omOK>w z@_`#|1sCc{Ql_*0Ltt)B>;7fLLaNxPUp`h|LVKX?$eOz<8nZ0FoC*!yygQt?T;dD5 zr3vagiG>9{sTWJs9w|@=MeO4%lBPh*J?&uDT0S{=ww|yc@PD1;-@ouP(3kI++_RE< zh|DJtv?pP~VNA?JwWc%MvnvFa{N)eM@)`Z0wuPx_EYZA&2j4#X=h6u&eoVkHNW7b2 zP;GS!Y1~r#boljief|h)_evo6-?%~8m|#52N&Vn7z?1|*`yghN5qDrD{uSsLkfpjN zQ3ki1mfls0jU@js8j5y!q2C7{K_wuE_wCxn@4Lqw3X$1E1R2ZLEmBlwNpsj>SC~b? zn5MrNHYEZ=X8_ck;vXLN*I9~GXjB7v0yFGvSf`71nzV# zN#z_oAmEn^H*5K)4|4P*d%#rVa=>CX9QsFR2tf~t8@%};;#PH;FWvMcrDp%4*T6kQ zR*szA7mih;mUqXVgktSijzhHGLTiCdR4)%UA}Zdhp_Aj%nCpzIsCSOSu4qr>qZ&Y0 z5G`-+@kl3h?ucMiDvev6>7~I!T>P_6_1iCnEKNDki7~KEvhdE?tSy5wVf5{j4^UE( z(D(etzl0oY>pAw{jy>VHfhHu`;08lv1c~GS*947+4a%A{01il!#6tzDu;s)iISM*S zZKQ{}EfQEHHm)lb)2g`L-*l0XL=+q9RI(*S!3a&I9K|g?r9|NO9B`@JNixBVjaK)S?@dctf;dUzwg`aV^!-XJxdu4?-ATWM6 zH#~TVas5k1tR<^xh$Y;8Y;A7MjI#+aLvs$duAivwicien4V42zY3+dLQwYD5oHfl6 zk%T9MM0#Wx7JKGC&mcYwIe~z*QBUhAZQZS-l=-DH# zbAv#A0=A*+b-z!u6B-bUf0y^n49r0=gHeG^5-3NM7_2-pRt3laES0?SAwk>j2~H=q zl!_e+NfSoF9z=oP+|D#al29p!69M~zL?}`LQVJtV|Bi6zkfFvhtLmf=wc`1cED0+N zG!s3v$Cqm-@+yl5CznM3Er|hz|t2tJ_FGQ`EeKOA4wMz_T7mr#_`Ee1c=Dwo6&8=dICsw>I}n%D8>GbrYxdMe%!z@huwt5*;pO&1#SiEKqU32OD5$Vh zGC5kPO~fA3LUiQ`Rz3N6cQ_YkDpLK2yWs;grnfBVcJe|2gMS^W)rv$thcUSlUku{z zgG)%Pg9TLESkPh|vkCsuYCGd_p~!FU4yr%*jMYT%6XbX#+c~X;qHpb(=+uVw+|Bx2 zf;Iw2`NZe#CT&+R+?-l$SKa>V)RNW9HEmsX=lSd_X?kP=>a-Qe0+V!{V7z~8#W7~K zIyxNdv+nI?8R)!J#Wb+#8+L^nlj|N*ZL1|`HPVFk0`07odyXJ6G>}wK@RJ^nl59$J?xT=`0x~}i|c)LvQmSQ2a+u7erW~9RHW#?9=JruxS+pKZpA|r5JvGxZw*R9UJ(@n;dANgNbC%x%c_M$tDf5p zWaiHo>qU4KPs(h4HDOCGXbEE(=njH?B%G+yJHYBsEbIb`-$XS-~ZU22lmZ=INCh-fsQN4v;Vh9WD;yp&i@!#kpvkW%f39xkc0|oxclL& z*`J-mHk*s&@$_l!|9FUyfjNzbBxAwZLqL${#94GRhYNj!_@P?eX(B@oV}0s7v4f_>py`=dqruouH@<1?DP+;178CY2Z&V}8l)osI1JJhf1FKy81&boU?vfhlDw7GI!I zM2HUuOC%fND1gE1od%!V14jl7qCSXi+6qLym(8}-QeOmpvyFz>m!0Z6N;Q{c%Kb`~ z%^^IBH9s(~(@(XNU5#`B#J~=U+75KmE~fEx@ONnUzy~HhnZg8_M^(AT@^0!bX^!dKC=g^2OA!UGu43GO(oPD*? z$#G}rR&2giIJ8gNee3SIi)_NORS`btG&-$Ox;7*&&XElp? znH6inXI^PXSZX^5l_wrgeUi#!5G1J!sSMH~62wO9cf*r|tg>IHxH9{oJtf%p__h@} zyj&|kkZ!srlA1!QuIjbwH{@SAHpo@WqND&d-o&##NZ9txSxsQIYzs*{e6NyWIC2in z_N5;M*SaHUOdRB4T9nqI+S5VV$T8Uh*RWhBSE?fShS)Zr)Xw9JJ1j%FFpQi00EFIEcTD zSm({DLPAlIT+u1;t$Q6ylXSkT?fOl18+@AsFpH45UDDPtsK(5HCIqPA!`+zzu66@MNu) zkq3QI*t>F;APcC*ccFs6QX2ng(Cnx;V9#a!0&i+yw?j|0EU>GuzQ&w#!O(UuAW$ns zG>s}OWu5_|TPEyXwn`Lygx0T3r<#yk*J3V^D0Zx`C7 z!^V(w!jC;vQ`T)>@xLi$TcNUyv{&*JxGBT5l2HIAT_852J&B6ZZF&c(vhcyI^TUdF zihUI8ytPO1wLq?%h?!e5>-#P}8YATs-?=`DChup`Gt5flSS^v}tJxM$l7L!e$t7 zrkf00&9y$2Po$ETvCJU9`@?QPS#E21xId!Tcx>sW@0Dxm1TFZyf;x_cBc}-{ zV2ao-?s;IJ^tEh;ewel-F;C-{2}r3gH?DV+1XYNLM<^-b(Rs>+KP|s`SAWZ5*t+vP?9bmyaeGF%_q~Ur`;%alWFhtM8!h_gD_0XS=A!hb1A7*H3R2^Eym>p z&AUPd)k;t@1y%U~4Sn4kMNM^TDxnVI&WP|kr_?q>FP#6zV_>uoDYsJ(&WD1B;FNx@L7{}g#;+qNdd14DHS zEpXnsQEqZm34lWm%?$M(Yh$6LtE7-RaN9Ia0uXRzHP6h>qUprF8{1#ap-1d*Y5l>U zX0sgw?zVqc3vVJKP)*#Y?5Oc9&QVKd=M?6xY8*LwvoQ(knugBp+zUE&%eeA_X3pQZ z5YvPq&hW-N2xp>~bDz-LwM-MS#Js0l(jTu}{JoOtPL8}snPWAPSE6S+e62k?=of;A z0o7xhi>$zq)cYVC6R&1#rDM&eOO#gvQZ;6nOvQiYn(+5!)VIlOIaGU^NokQUDALkF zSAI;s=L-`R4MIemRG2;qA+Lnu;cOLw4Lv!1Y2ab8CndRuEe$>qX_NF~7uQ+{6Dq)O z!yIsO3e`Yd*;ZV*$Z9dy^nUIY&u2VrClvq~fW9cC`cxvpq8P?cipzt1khpLJ&}y-o zWSkUgG2L7==^*Cqj=$75#iUS^wn$->#o}}Sm(}XBgPs?yEc0VE4U>vbH!_{EXS>iQ zDY%2jJMMXYYF>vKIH350X_kb6ls}J1s(f2OJpL`3#HQ#D^SjKo6y8hW#qn>IEFv!J z2SSz-&p5Lv$qRl%7v#4 zq+=Q>Q1<_GGJri=^7fk&C_N7vmnc}!;}^4>sriHP|a{E zNrVZEI$AkY`(Qcgbtw>T1GItg3@{-^7FBQte~GRYMliy+|Q!ITK2ltx8i8Did)85YnhzkL-Sa2n7*P?s};6 z03`N6A4bf9E)nsF5Mn+A3L#W8e$?!K#Nk_2C1A+8ow9w!hj<7oPGK$et3KKmT!gAF zl-G2|vNKBd@h8iqt z!qoonoqo+Q&b|mlF!U}=Q?WwO%!GM#yz!cRqQfH0KQS~lXy{S_)~C6LIp^O%<~pjM zY@pvC1?*J)EH3*>jX&JtpNrV9hc!gK=ld$ivi$Uq4wYfj?l)2J3S;E_pYuc2A9bib zeqVcyy?vL&+uiW|*%$lOU2T`wGg&F`l}u$xM{ho6UsPFU+tW9jW_JFrD;a`(IUh^- zaAi4aOFD3EG;qG+NjjVMdQI|SkFL5dyg;f86CHk^3lO_yeB!DXC$64~x|hw)`#MGF zoV;Qmx_dQ%y~Der{A1n6$GM~Ov|_B$4pXFOHQ-oYx!W0HN1l0g6Dxs#(D6k4UvERl zgN)^_5TT|eW(&U0LoNKQR@-pl)D>M$7-9Tz-;W)ei+zJJ2I;I1>(l<*y;#~WZeaQO zoM5k_{MX&%W^?84ocYw5jb}uoG-TEL(xa1KOS&9Wi@xRcrvU#iL0_&u&aq1Pk>Dp- zQ+1N8DQQT4cmQ(;`{EUvyZZM-UEiG|$&K;qPC^ZZ=QKRdIHY+s65z+RKs} zf6`{2>`$72RqxwAj+}bzshvshY45A=Uo0HhlQR%5REpPwfOEdru6 z1ahSVoyCNhl36gT{{il)Kby)570E^+cVJWb5VXVXD>uy9q_so%O!?Eoo)$YLIQQTy zcQ*S#MDM8Cf*UQZAUL;)3y=V`qDpDeZgRA`J@B5*pFB2>-20;2Z40ylqsKznG$Zs? z>fk_Xmdw4-v3a8}>{4hBh0ybn01JY-@wso-i#2lrsX7ue%nZA4f0@5)6U3lK_h^+7!3{4#7^?5?G0EOEJNF7%yZ( zgLuc{hjai&&}m9hI7eF>^}p#De-ezo2d>s+gv${k7Qx*)hR5Fh#<{@P=fWn}iYp6E z^3NsZT|Dgw0=Jm|;w%{DkJdeI+Rgm65(qBdd)&K8ODx_kTW?8=p@ z;$5KQ+Wap0Vq8)E4Ghrf*(?hpnd@QQS<+{Szs5#tWHUk+6L^x3=a&!f;_;BbWy?DXU=bzK| zf^IvLwioD|m&v-m`B;W*hSaB-*XD>$BNRD%qbTP0MZ2FG1*SaO##665bp0;aRmqG2 zv*aQu-gbz08xl5|Mhs50aomXEaWQ@8sMM5Rbcr#nr^9P#BrUs30CH|3I)Kxtop=@ zOB!?^Ky#%Nnf4dVl^t$79cOM0@jT?F58FH~UB>Ho%B)Wj(<6^sAfN8cSfEwXXpP+zSVbFo0qI6}1(I=yf zn;XU!nk88Yw_)qn{p-yEHV_f`@nu^<%9SHpqH9T=CnMinf%L>_$V$YZL5wDPpxi2@ zLS@M(-yU6u9t$kGqspsEJvw-LbOvMJnO<3{_F<(JY@DGd_RUtDvQIjrIWpq0rmmf( z>wqxHj=Ps}XwFU!y0bbf)wNk6=Q=C@s~;8nOmdrSu+T3QTod~%Q*Nb%{vtQ|H(5Zz z8C*e8k-0Qn@?yHW`dRIiqn4HRIuNX?phb)vB!Dt^mgQ4m@gIfxC>2kq6%^3%2r|nx{5cG4+=ElQOrrrDPa}FoDh{r`R)}v z{^xtJP@*IRqKPD`wh!Y|j|fR6`==b^3e{LL`^XV)89iBrRrYUXRt~u^ax2aze8)db zO-DfSlrpZ>rZ=1BQG51p?FhS6uFa?K_bPb>Ky&Dx0xe|2k)=;^_B{_Sg=;M zXaIeX?nas~kgp`Mv(KN7C5D^JkOiKeKKxvC(Rmb!;-tVvTH7rj3q=!LdA@MFSZZ@M zpu``|U|NSh<@DEGQ-5J5Ds$s9eM&VASSK)G5XE9?RvqPn`WI~$i5prYwM62m?y9gg zVDr*VotF?G8Vzr$S4Y=0#V~IuUb^XZt|LPI5`yG&8eC5clcN&c7CbIeZb{Y-Yi2~u zA{wmTg~ImH5WJhN;FC08NnTMoFC_febOPzPIdrDx*7$sYz`fU#e1K)S z5S^c_?@4s{T=eaV5hn0+bWk+iHxAgI#2kms`BIJW9RB8HzuVas+@d($x86{H3DPvx zgl9UN3l)Lbx=a3Cw^YxbaukxB;2INCa!LQAs?lEbIZ?x9)ihl+CFo_$MEuP|sOGA-bVU0T%nu2xgdR3AMYxHdFmZlS#Hhl#zy1L1yLyx%?~h2dg>8<=9?-NkHR^Tl%C{? z`(t;G)hzN**&dfWM>QgTiw?X=?RfvgU-F!@k(TMl`bY15b@ofaIop8v!(LI`1*X3g z_1E=%CZ|WByF!T9o7uX0!__R24v8t)i>SW9AexMjw{wH`<=?KhD9m7|+lZaZqmSS= z4MeA1e5JEzl?(3&s0cj_bYJ^Dk!zx^ z=wEqn5Phg0ckrWwLa3p!%42%a$@`9k3rd0@nO)FmzQ)IauWO7%oUO(q3wY63){=y&R(X$=i$%yR=hE{NeKH*wTV~A55lZ zePqSqBkKbF!U_l%A5V|e?BebyZpxWS!>9AKG%t0~I@ng`;cpt(BpB%c%aFX2iLQkka+OW- z_h-kYra2gtL~8ASl%;g|9LXnKT$JV+6ck@ii+UrQAJ;5!DmoZ+_Sq|Fg~T8vIsTOp zn!8|&K5xF5a4K|XQ%bO4+trYL;y_{P#bwuC?t6xrc_P!qXsi0}*jI}4naz)Xooc^* zU%AcFGv0jlar60^aF`c5?;Kg{2p1y2sutAEDWIwDY}nOQo!I}uO;#0CH)%teVHnfL zFPre1QGC(W^B1Y+n>RkktI^8+9ZK>{fZjJmfKVR;5)o-lG}!JZ1P!6DB?56tQul@7 z5LS_8(#x3S)|B+? zciL_q6>5%T;x`CK71!8hWcu)qqkp4iU!6i3S0nw!~ zTv4c?F-W)9i`PuSx~ix-qJRZ?!naF`pniVBzm0`aR@=~u4VWmuR2Da7GZAUeD2>hu zQwgO7XCk+}77cET z5pG&KEyqv$eUl`omO+eb(tgAiD}^gp?jQJYQkT5b3^I0(qEfg7G(6k29AGyfxlILjusr_(w5y&S*so++hFSKV3gp zyC^O5qJ>UqlZd?<{sTg57sx?FiT>lV;J7ae@zrFE!_o?Tj+}%~8qRMOR||6nuO)9e z<1LfbICO9aoOGdVRl63{4WoiyaqMSaO-4$E@-uYnBEEqpmEyAi)Wtw@ObiJCP2^6m#LSGOlYOe58F`r>8!5W zmlg%$qCU0xo;AfEPJf4M<1^pwO2vK-9Z=4SqbvX-hMzFibu`lph^#QJhEi_o`8oUk zn&SljPF>dKg9JigJHm{D9p77r7`W8w#L&SU=UZ&kP#7_E+Bi}@7srx^b(oyZQdb_( zah}QTjN{BOCY>=RnRYxr$=3>heYc7+T%MHvGEr=E@Hl8)aDum(6xTi!UM$X%2umP4 z+itMbevFzY#u{@pD#F=T{-pfzi3}ja01OTV6z00*>jG!ePVNj3Y8t zfCUxhZm8&9Fh+yOB62Q5a;?u8vCP858p1O3f!VW7KBFaiGnu4phg!^N z-w3$U5I zw+LDdpF}`;T|#6qla*9Je($O`-olFngy^OH_s9*BSTa|>4)fcYm(wo^gZ?};b(X#M zOH-M($HS(eXdkcLUb)4lr$4=phbeHTb|%g)PE9ZTjbNbHNtHqXpiGKVX`YF-g7+MM z*WAvvG<#>H#bcx7!^JK?lm=eI`0cob428ym$GZ1Jsswub4{hNv4`I({thR&-%V13C zZq#Yo&RkED;Y}3V1es*^F)!XMnI%R6^Pm)z;-m$4#Lh6&J2)oL`*Z2`(e>x*cKI2V zDk479d=AIR;2jhjILz|Xua#HvI`*fn$h&L^PQfbt_#Y{^Y?2IZ1P9fkHp=y9GxcuH zi<-}8CzI-@H?TiuCZYR#zun%F@9{K*fx&|WViyk&pcyu!!T0G5H%Esz_ntUfHDZ*q z?!%>6`)S+Gj8`W)b!5?V*G9DjPivAWn0AezJDaqC=ePI@T-nuBtXo~0VV9OX^GSL2 zuFB}ked&mloH%boxUy(^bgx^jGU`Q~SOFPENGDYYN85E40!w?$09tj+eEujW9-~NJ zSV9iD{Ij2SCfUu)O1K^A_#|@{6p3&J1j$`3{?qm=r35QnxB{00dhs zq}f~3+*}750cT0@CrGA(izzR6Xj!+_h|A0=_rc`&m2{1XC}e=x45KKsPl&00_hQ9G2NJ+b|47W`j4r zjv+9lI+Dl1j0Ja2QYe;Wwm(~I#oyIAUx)1o8rQ_Ip3%Tw3GWFSZjyExBe~iitr;vb zML35%ABy1hSSxo1Z1yj_f4~jV$V;_)n5+pFd?QO(DUHKl*s=gSRdKF@Zd_E=>zd0% z8F5`ZATdWN#(0XDAuifgKne541z3CwvXD@0#Z=e>zrI0z-8q?~50dhvCt(J{8b&GY zvd~>{2bIZvm=tq8S;XJkL7{yt9r#Y^=l)bRxMlcBOod{j_dY3xldph!s&71Gu7)^Z zP`C{VH^{Cj;)HVxY^>IAu`2Z}7xZPg-WOdMpuF^;SZe}WnG>sBvk$9*_6leaueLBE zC#x0g}h(Dmu#)eqYJs!4v6%T6>BhuvIbVV7^-0sqLFlW=A{2X-dHtq-pDy-fy7_b zD|*B4jdx7Zz@KNiaR!Myms}B#fH3hZ3gP15GJTjMx0)Hv;X40z8L2>*2w2K@7&^#! zK)a=y{SSj>C3M1+e|w95aW?yY{@QyN>i`pMd$L)4f8Eg~*e$=z5Db+Wu~9L!R25L* zn;!7pSex5PO8YP^PMCe8}h|Sa+sT z2*as3?{6(&h&@BZ9VbibL7cAMx2>A!P_Oys@>^)b;ya>Z zayHV?Fj4eR+KXQ;??qpu*!opares*AB!mvKm6hRU{J4Ss$LfD>I8TlTD=AMgzBg!CEQB?NDNh+Q%ijXH(Mm@+hZs0H{6SE$6iV=Axa zs;Gui1{}Mv!3BsbU1PxfH^^pMNj^9&&=`IcDS0sjak@2Ryg9@v!dop_UZ}RT*FCNc5G+I~ z?!?f(qNQJ(T{J1HiLxc6qokm0CmdWl`y3>zp$e}6AhRbQy7ebfP;>}~&BZ(%89YuT z?05k|5zT9wD}VxRZ4=HG{$3rvjPLcVEa?7U+>M$tkpk7yh_I*Mi|N42oMe(c^wENg zo7#*3>~O`aZf>gi(H->!7xYmU@Z3q+Cr}F9iJ^T6WZFoN4JFs66p9RQo)Am$OEvjK z{LRISg<*1RMDRGBCsP3`{cY~w?vFtKt|&7a6zbhUF#%2_Jv9`Pn}ZB;H0+PJME--Y zs;oqHe9+#3Ks4W|)vWOom-yTF&=^=ddN8p^`|+V2-*=P^fNfA3_qCF)BP(Lw5@j`v8b@OVBSid9KbOH zh5@I*Rh4jp-wP^uRJHzi-yQfJb-#R&RM=haM;|$-m(+`=uK|6;vQ|qK#RJMAPdzkK z=H4`AH9J2m%2ZjkaBK07Tx9Tj(*io&{19&~UhdT@ZKDwU5AX$cXca<%nv6GK36W;z zEZ@(F2e}$vX_gupTV;e(k)i5|-!b?z0nMfkl`3^Je^3%ndut>sblvkHlVk!4&A#*?jQ3DqqfbIM%^T#BJ z@RUr9BV7FaR|G9#SgBM^5Yqt#CUmJ#Xd$XVk1l5gAC`k_=;c z7IG3+LURaad0K!l#55-!9t(sXQKJ%k?f@22u>q>)9ws0=-x2Y3WKtxNgy>(zoDz0y z;!j_zK5!l*_Ccwf;}B3WBgvjz`|H4xf_RmzaAbm@SEz%TN~StSR8U)dZ#*DkBQ{Q@ zcBw6qAWXm6Lx|NYFq=eb<{E#mI+H(^fI^CuGjR(URL@&n$jsNdQTD%!?&|6+U!TeHf7<3Fu%f+z92B*|s3L5upQa4vCEx%Sclm zop?AHxcwJxj%q$K^k9PbUJ;QdrvC8ne5S-=JjS1uglBNeB?I$6=~C9XNT$Y`W|E6m z)feaf%<*96Mzk_4fmVc_r9CRl390lGnNMmay-6#cy8GpESQiVk!y0&ZFqYfXGpE0+ zlz|gM)20!!yRd$-{6#-G^S)r#cO)gz-CedS z+-SF&NLy)=j^@92!3nW~-KHDBthA0-O8^Xm$5MhoaLr=LaC-o>fcnF*p8n>Ubs)Hm zq@nDxK0M3-x73CfPlHcBP~t{0f)IZ_R%R4Qm$HGFh{l@(OkLtmRx4uH#=}SN9yn`t2*cydRWF zHB&9`eZ+1Vd=4a^gu7&yHj`x@YEf`vR(ujJTq4y9auIUkUW0s6nO2v<8F;uL1QcLQ zh&&-hByQsHaG8?F-T_vvYg2Sf*+n>wyIR~^dN&(g`e>b*hUh#Kk zToD`)Ko`PJ{D44wZlm~;w$s7P6Le;`U5$8@aPKT0NdbYCJ!JxV?8uHIbIN7Qm=}qy zZ*r)I8{VZwju)?sq^xs~mZ#ornRTI(8%1x^rbPmJGwpRJZinyt2fs#;|4 zXVyZs7~~~F2jd#$-=fhTV=Ofncv-z?92^|J6V{X_FBPRvKArirN%~OCw+YzVUgsb- z&5Z|T>_9YC1M4Ab0?+m)7m&*mpq={s6;t46C)lLbEYm*<}kPo zE`j-=i_CuK`aSBFQcK<*pO-*8c_a<178QZ3uSt1ZLoDsc38+PI0=*?CD{qp-Y4iUa zu8KIG8?sj_bfLc^M+nx$9KYt4yN+mwxi@o%5P)hsHj*<(@I4N)F5@694z@`8A$x2P z#0w$Eor4K_3^|Gj#ETb)$LpyyN77UJWb57#MO+H_hZ^)@ri>SI$xlsk!$px%e?~M- zRZ0@ikJ__4iWO=&vm-Qv}=_0ZG>&B96sF0K~542m7qgsuO8qTBA8&(dQVj zbg%#Nh1Y>kho%UB1czke`-AR1z_t2dq3hd9~zo@K`raZ)PX_2@u)hlrXN%=(+K`i%c z1+ONz>B>qijw3VbO=!cqxk>$rgZPVmr7~AlZ>iW#!MrA}?Z@+1M~=Sim|mvRrbpVhqgyP+ojk%mKiB8F10Xij zY;k|k-L02?x|riIQ#Y}t8lQ}yD2s015;D|r+GFpgxDpX^U!Ho=1^yP4uhJst<7Gl| zn0eH`hl?k72ayKOK>u4|r!TZCVe-v|mV_+56I=Fz>;W)&>}bk~J4+tem!Z%XQ&ksr zFYBqLuV8N&jO_jA5wMuY57E=;Rm_u5TAq5bQ8gp9kVe?*M*eTGg!TOnRy+uVq!5q$TUm!Z(a&jWZ)l_ zwxHs}%Zz9}*q6X2b0&RaA^~IAAt+E=^pDuSwzo|*s6J(pSd-WZAQf3x;T5E{y?}tX zmzP+f@7iH0Emj=aSAU}4$ytxyWa#*(wWjT`nMsk4&y#8PZTOAK%ap??vqp=*MhUd5 zmx2^mu6`V2*unl`WjCQbh*{FPmz40#>z@-&BNX)7$&qcFz($u zN$suVn>~_+Mfd$wDWslr(qs=suXNGgh0o0^2ha@jqRmRWEqy7syYt8OGiVt1h7Ox1 z2K}rsTBX6Bi8|1xx}qnKQPXu|!ip>Xa<})pvsLql|c zs!O1djQfJAi1a#Yq@7MdvdRZGOV|;r%P=O(q;x<7H`Ja7~YP>RM0z z?bTA5qG0alMWNTvW1N<2t|5`rQWa~CQ9Fc5vRJ+k;g>q)(N6PZ zPIUfeD}`Ljk8h-Y-EmL<{pR}Ol_Uk14=i@K|HWOx|HAp&ROon2;!Cf6j*tB| z{q$9Z*Naq-A7AkvJ0>4N@2~62&+f9F;z-1H92i{wpCGuOJUOJ-V5bb?Mcd=BR^-=K zh6lOW*h-+c#TTV>f7bnR+zr?KNSl7C&ca}(&#j3QPY<4a?ZDsD3k_8P^!I^%YD@zJ z)wGtJbHv1Ncy#XBbwKe$v2QEBPP|QGb&}20UB4Mq_RIp@sic3%R_kyzS-F7CzRmov zl71eknT#Nxx*ns3NB_BB(zGpAz7G$TK$D+ikszQ@P|<$(zdu5?-Hqq%=s)OKKPC?* z>{(3XE|3||Z}lAo)vr^hR*q~ZKi5VZQD>X5v8x)G$@M#iH^${Zt>ts^XKW^-VWbTv zQUWldJsSMJe!6+YBAb+gtS6EJ;enkumhYdzm_cVqf&y&m=MP2M+j#}oQ?W#XXIxD@ zf~vsfwomSy3hL@|$?G}!pBAyaJj}3Izaqa+QRcru?|Jia8^du^JTIKk&af{5K{_P) zj)tSLOgX`O(zP?<`H#Svc5u*w`7Exu}_$scGPt zqCnFmpM_X45_${O|j|7W|I6E6ByC}CP3pY2n2#YW`4?CwQ zI~O-A4-Xfo014m!FGLTHNzT;H+{J=~lZWlUPe_Ex6AGBh7~*rD;txU%pb%o2lDk1` zfdH9Z8nVdz#mTi{V&>6~-_R21|AvFvl+cUN3Aw4yu}_hi*^oH2trgYXt~y^M%f%3f0UVtN#Xd?PD`%BbAtdmer?k@I`8YO< zYQT6T{~&{?Yn%!Q0vS|Kmm^&wD9O|Nv&nWoIGHoJQ>h3$X7b20cCo1YW^SP|+6c~J zg`!}EsSD<8*4X)mATdEPL_NZsR(1IEQ@pe053l$l>w={QJRx#D=p2O|h|IJ1)5oM{ zfA#s})XUPkLIZm7g(eKj-A5JPEg5H-E8z6DS?!Jp_Nfb9*3vf7Jp6mV^gOacz|tN9 zH~ehCg8>LaAiM#LE<{>Cb31~Bu={&6m)8a+^PoP$p6nKQTL%m1=oYPj^(}WgXp&uu z;$Qgy%VU|QDub1p^S0~R0Q|j79oK+P&(vKA_kKK0X#71!Q7lbGg&nXcJJ*j)Zy>sb z^^^f*z06?qeEf&O1cOGYETI`DeG}k5Oku)JG}gYWrQ6JbBKNYHmQ=%J`<>c#LN=Dc zpO&-Q_qo?fefuTlK0E(PhRiBke?NFup?qY(tkU@U1t!n`{aAe|^!xP4 zrP=SQ!eM+_B zi6*H4?k~M7*ex$GeCf?#I_ogMJ?sM8twuZkx%2k?pP~2v<+Q)-8jRBlrr+MjtiWkz M!lkO}>hHz{07cj600000 delta 16758 zcmagEQ*b7}`v+Rvwr$(CZQJ%++t!wEZExGHZEbDa-17YX-*a>B&P67ZOlE?~^TCtE zd?ST_BQ=_#0TktjL{OmiKE7jLf5ThxvwyHoXsQ%Li#G2Szo0BuLM~}xe11?Rs5Dmi zT4(#3z&Mi#;Jj-KBPwU~tAtoRsG_|uIJAdva~OvOELnW!cSsEn8*wQA1F!S#dT@%< z-Hrl@F|xNz*N(1Ku2sRBOIP(;Ta(syZQkC0y8>Ik(Xsc)uyNd6n!h!s8SeeqAx3u6 zU$IVHhOgjpC$OAE#k7AY{(hYNa6ye#Zx-)E$SlWa#`>V5%&E)mIf)C9FzXG<5EHhZG|h_1tbiL(Rh0%wH2UHtsT^Q%HD#;;AsmlX&TnH<;*Es(uVE> z?3%)qMT1v#&XNzGeN#$I(}2$ypoU4lP9mKs&VU55xrq*GM(NUUoSCx_M0W0^;nNTZoQDuBju<@xpt;jB?KX9KG22MI9+8KJVc)f zPT2;1IoMwf2l20kLCygVq8S6m3A)td!9c)vF+Lq`EX|Z}vl`=ff-}CX=pFw!q`e#t zYraY0SW4q8i;b|_;>ggeZ_sRNAG4G=878=sn*-Y-TrVT>kgjDd52Pe#N;c1-Or+A4sbBJl;C+WjOWc&kxCUl&xh^v&rkn3Fglbwi5tRB|G#)BVX^qD0$ zP$!SLeF5}myoG}}ZvRLrA$S@9^^G(duS)YUSpzf)v1a0knu>;YEJwxDZ?f zg%%X&$F1AtWIM~V&9kGe@8r8H8Zu_%xVbIhhH>2MCQJ>y&lYZ9{DKy1)Y`1=GM^M5 zsy~>x>;vTFk+_GQt2M*}uC0Uj4HuNEUqU1YovsOEI%nrtz6eboPZQKew7*UOy6Xjt zfYyOS*&luy`5)kLdI*6$OwP^SuKD`OT;u49+jEW&V>$Hvk54ZD zZD>tZpUpmbMbaVAA878Yq>4;7YDG~oB-Zg6{UxCvTU5^T8y4MM@NtqesiR~_hz-Eq z6G5~x5Ev7^MRclW`psiHdI?ITLX*F@e0++63JZ|XxrnKB7O}vm0?U(PnjRss28}5)Exy&;a=^%Q03Vz&yDhbG(nH! z`vWjlyX(1p)w`nN6uaHLe;v}1jd3tv9erWIMGX!vNksg0BS5{{nkK#SycT%3*%%#K zcb829IEOiYH873VJ;NR1wI{eF<9llB*430>Sqp2kyfE_GmTUz=<}h6L%6u(#fA_a; zY4Rwgn|*YpQeW^n$qY6L#HwT4$wqXhf&y}g_(NIglC(mAwr7c9V0GS`o7Eo0UGE^c zmzx=tu%i9E8HE0Ky3zH&eiLT^(wW~-@#q`y^E|b2kOIafIxogv-F;Ox^Z|Vibx_@7 z?fBOT+Tq_j%hSA7kC&EhBVYGHKf=RL*~}r_HiJj$bE3maKh$Cyfy@rSi+5?ByI~21 zB)^aw*x`@Pi#RXi)fVGec#URr;dd z9#d`jfl;&Uee1VuXPm3x0hnj73xqNVjCm^3q0 zjZ`zz*~PSGx7|WtaTS=DC(K*Qf|N9;C2i^yX$JgBA0Gz_9Enw2t6C}Qskq0k-kx!^ za>_J^`ro=^R6ZO#h308L@ROj5T>sl39Vqwz0WaFIuDtsu7fSD?b`keO5o4oIO_~)6 z6#%q5Zu|D5F_@R%I$x0R?&9C7$b1_600Wyn56xc(KVBZ8V+X0-LUyDb{Ff>m&xv%b z;FbB0)E>e=M4voF0Y5G2(_!2;Yj5$iH6cqdH4rlz4g%(5>xTiAEyjsKgu=dQg^7jO z>fvBj2$8%`cCF^(>3fpA=K08~*0*j)>wp>-%R7rL*i3yEnm&rPOlwL)m90@35o5n^ z#ts2~zx%5SgNrK~ZvlK^|L117ybdkC^wIDMamRr!yE0~XIDfY`KWr+cl`K!JPCDgJedl=9j;- zNQ;^B%FQJa^(OqT#&$?-4bSc(NfeEfPa#X~5cf!I2yoetaDb>+xj}3H-cHVu{3Fo> zVVut+4zSu=mBtgU0U^Zr|3u-%D*5QOYhF{nl-i?~&q&G2B6m4WaM7r$T-R~Oa?wPdP ze+Y`=K_~7_@*l@(Nc?_Tlmb+7gk{<(XCm^1^yo@8HrpRDt%U(s3((aluhlEHOJ(c@&<&1!M`r2gN*NSweMn=^c8{mB-_Nu1-$hcED2CQ!#`vN#Ip` zt7T0Vh?sJz{>@?anaNB8)7stWqCv-se*+bBq*GWr0 zxVmnQM7pK&W=tLVY`{rOtBi}6eyM5+Uy2%6Z}(a$*0uw=!mm6LCx1*hDT?1{o$n2= zt=usomzdz1tyPtTFePqDI6UA6FEU>!k)z%%eJvwIY^ zqL52M#`)K3$dQz-NOIp!rK!>;r~vL?O`NiZ0Yj6IzJ0YQGyq=DdhT(#@F*Fr_E)GX zGar$4L0HN5#=ylovn|Vl4YW&lFkQTO?cLVTZ15xKKBXWTHiNXXk@ZS-#|;tvWh@O` zQ3*V_jRT7^Vrm*6Z1N_x%IoFb!vGqEW*`Nx!8-nJ#(|JHT3v1gafL?&NOQ*<;=Zza zN7C>b)zw3;D?ruAzrL7THrGl`Zi-<4hgv%BBGJ=RYj<>ZDyzj{VfCT;jSbQhyz=uJ z?<5hHoHhhB3+S}C$a>Z2to&LHGE*lMzYFhr7&QcjNa39bg8F z^dBo!P-20x@%|@SPbrna^y1REsS*H^^hMxh2>i64%&Wdmqu4E$y$G9=*9>&?$m~MJY#-EsR4Ou$ zk7I|Duf{dqhI<1Y9UtqO&!C(`#9H8>>*Vma+el}94=tK#-9c#rjS>R*O#}cL5f_C= zVlgeSdc5D<;y2sJ2W)bd&&R7HFI1>P-oT6*tV=|-vB9to4gAma$zaG~FTf<_tMw)Y zW4+OH?6pD1nj9|-)g83ZMb}29MW3VxMtO1h{?5Il!bB_`?Beh3mo*Bwu^B4ImX?;` zmD2Au{f|cpGam1iRj5aW&3gbhld%1~7kHR#b3mE5X5!Q11gdq#+3B;U@7B)r6tZ^C zeoMz^56RewOOZiHTcx6d{FdL#Z2rR>7v|+n+4>FY9rX8Vbd%x& zQ^}m7O@ERPyEBu(!5K*)JZ1#w%hd=xuj2@?n`YPQ$6e}WxJ18l#;pKM;xGQG&!1L< zJ9Mr?O(!{|mI)HVRkZ|_H}scbP`>eS=oAGNnakjUI{0=bE=h0*t5eU$wmS0)N;`x~ z@T>kdA#X;>T_up7Jd7UX@tbQPZD_3>W%WypmIJNt4`FFy{HLXvNJX2QZ%R5U;&jsw zM_&V#{TUMz2lrzp>-cH?G-!Yx6w#d+m?)aji^A#%&Am}Xr4PGdv?kIjyQ3c20SKO< zgw3W6DzVt?BP7{qvd||2*8IH^SQX;7`kSU~N+epd%s|5E=B|*Ozfk{*CnaH+az~l9*!9kl>Z> z^y@T7cNKx3hWbLp0z>>K|2GcM%*RRAv5>Y(V9-7HJC4jg8~^6Hfac%MB*~#<*}suI zBB&S;H2v$YoWKbk@_%^FLHaMGVqB!?qr~j$O8qaMTGSgqAQ`DdL}{0_GN4@l7c+n! z-CgJZsg0mlMRpuT8Y~3ydBwx3$zZmFUk93r3 zj|NI83KMq&z4^9N26)IL^JPar%>J+oncY$St)Ln<5y&H1e?#EiVu*zKffg4l6`|sb zj)|e5qCi(y@r=()HgkTgpb!H{a;3VqWMlM%yrkP;Ojtxqvg)!>sE1awM1+|- z%S}d-_k*IdO9@PX9HEJF&VyBgR3x#Xu?c}R!ARMl;Yb-NfVmBRP7E;wE6-yWbBGc{ zZ$$}3Ef^osJ|picp)VM)Jd{C{>8EqHuYjEPvV)END{;*4tvE{e!+mlKSg??x3yx@>AxZ zVXT?X2^Eqf!1Y!0-D&yXqwC z-SX0luYmUa*-UMkJPj9(z+9u52JE!+j1~IlU%M5j*w(iv+$R#A#o3Ld#nZ7nCvJS9 z1&|oo26pFGvHa{m|5kV3*m5Z#AFR9reSNz!@yy*yqsPJ@7*`+OYTkcmD<@XSyMv_@ zkCwj+^yuckRMp)9Q~_II##>AKyWoxfc6EfeGj*H`htv%_vsUgj0t<2~oiwhTcXr9k z$y!6P^=iU;S-~|6+~zh?cB5oT!S}eJ_K<-J5IMh~pFiG<%&Eaatf|&NDZ3wkjB@ zSJjnI?KWT8!=vN;s^R-87VVHN?Bs`y?RX=0KjD0l{<3#qK7 z)6r$nW9;*w*1%fD;I$H-l9tLLf0y|?9)U&8`8|_7)yvX>78^M~m*IU^p87EKz=WCF z>vS4nK^`A~3ju0X%^Pq#J)`z_$-`2Zc;r}0n5QWJO|(X=QEO4NLSO)J-<85Tg@1uZ z?|RqVtEeI=QNRZ&4gu$XchMR=cV-+Wje*~N?T%S~c3 zPf2bSsO@T)UPweRbjq@b{D)}P64Sod7jNfH(JEd1=} zXv+i$t!L~K=Yt`xR3C)~sK5g+BYLh7)*${RcTwGiP>ly6?Iiohhk4TG8mtZ|9|w0i z0l~Lrn6IQRx>AUarHISShYEs#LBdX`=1B-`S>4>m``x{(=`z_aHU}I32%Wlv-#o3CECJ2mCV2WM-B5s5RyF5oS@PVNd2>!P2 ze*!@Y6z09nV&^_0n$39~)@fd@TNmogUQkNkVm=LBMjR93g^S)^be0lv!9FdduW|<7 z%;?=X5%r~Y)imAA$L_w6&d>Pj+RMv&?;*=&r1Dp(9nEX3*LKRK;TuSUl|D}!TdRhmWY*-GaIgorkYxqz)dW_`z$A*P#L6NcWCU77}f`Ar_t}{`358&X7F{Y@BHWmhO3k4PC zC+up-!$`-=+pPk4fRVZ$mW%JWZa z-VdLz+{Ik}0CF0vCBI~~`Y`f*a{>*fFT9u5X{`b{Z?R5Jm6%A$m|7NLt!iw)SSGZ+ zCPu7&txHO`J*&OcQWGf2BJgCBIBmJMoO>8fEq=@5N`cxq3`>|j0!yW$(@>ku$ zleivg0-Uwsv}AW=2Aqyp<>4V9K*RR()=sT#)9J#Z$$BFsa~du&LF>hNWF8b*E(unn z;`^;i#1w8~vi~5milGh-Qa|_}Cph3fMNxkDbeX4!r!L-8T%p;ynt6M}cF#~Mhqd3| z1W#>n;V+T?rcqOSvFI4u6^9t?8w({N&?6;-0{E6yviT+F>f~Ibbm7KrM&CRLy$F&+ z7uZgmyHdz;He_F}Uz6Qppa-E^rLrBcJPsv-EWxUFD>#d`-9e<0iXy0?N$WV>k2gGF z#Fkm1aP}*mVcG2?$24d37?*5!KcxBdDDz-kLb4ED{AB&R7+gM|c@AKmTe(9TGyZjE z1>kII>pE*N;Qu#ap@p&iP(JOz8F!kt6!NG6r5s{gne{lWEgXiJ}=bDF7fwWxMT3_!P-;?PTpak6M+|PFqLp>FL=C z$#*ucv8o&>e>U7Zk4nrpn}8rjO=(6*8jE5F=UN_?u_moRUVp?i{1n7s%AJY6OSz^< zQ4f#EArY8)#bUHgzD=-8f=M1V%EAewf?&*MfTkYj{cAb-#ol&BX<-+c)s8F#i3 z_`UNQ%@6zNW9vRQYm$`D{E}Gb51`liIQq;3hu=Ud@s`xGpI%=gX^O#}jUKw>uu+r@ zBrTI%G8d=kXBOrpbkY*)e3o)Fdi(lqpWZ_DH)*q`tIOJ^LCEnDREx~cp2sXz!v1Y+ zCF<7L(U8cD2Sl>GDis0M_@0nUWd~|L1buO^ZIU_cJxU1@678uB!$JKf5s*saZ0iBm z!RCq~4y9?A@|`HNhT2wHl`O>&_xZ-!VcQAF=@{?Ut{*WyFI}P)$cJ z4H2~Az-Sq9P$R-Zo|iTI^0}XH+zvDd>dB9|XrI{Q~z--?n z2-cEl0eNWJo*GFoLM32?*_(-lIv%5Du7@4AzbalHa{Y}#kW@mgTBzM=ROZiYhCbC} ziLt4%pC2~&DE>6~(G2m#bnkI|;s)=jg#NwL2AMts52_~VH}%Rs#+b}_%)`5RCsvTH zpZ|}#Bzdqw+5axmad*La8UtCAEvLkcK7;0n=rWYH z6nDh%<(RFSlW6rQ9F-3&J+R7VbzDU5_~-MG;=)SANc9L;=kVu99^UX!tUnkp}uErgcjFGMN=9?RU^C?8qW;ooE(GcNP4ZQ?IgB{FAm zO+0->=`^!k=}Z`z#8pu(<$>P6>>K0V;E%HH*Ikpax+o7< z8dD7BxVK={;i4fl#)p>IA$QGSF41cg)71x*7?*xSu+F7JnX_>FG%PEMOF`ds3+UBD z;n??lQm1Mmso@cB5?7 zdKNbfqk>*@?&n@l#y%r_==pTw-NZ~6a}!$JpbkIBlan;uQ53i+;FQ*-T0!5p{wB0A zj5B_QgW((~Z)$1#ZJu`(Qs)^RGe`*VJD8u%mxNLEoSQghSB*tPk08-)^H;)%P>5Sb zmvqXb5yp}9F{bU%%;rmO&e5$<-mQ>% zytvBQ3H5yJ7^Al~r|5l_=(K+~>R5V=HJ={WIvxg;LUur$WDi&r)JRFu{ z?J9kf|Ne&qE=i*j9tAEbcp(Dl%$=P(90InA5l0rDeU-PQ z&w{fZu4xHOL!+rh<>rNl260OYClJ<0WnKbC%M537h1idDSUdew>uzPOjMwX*1(dOwP z`ed~)3CF;8m~4o=ls3gcvUFr2uY&_`=t~=wa`yae+v+b_YAmV~$7g|bAHi3E2OrP- zfkE^*YDH%v)RGLIBuzX^>OdMBUVJI{eVmc;$Zo+W2ao@@Kfh0#Z@4TO@MN7m5+}QN z4gl#oE$p&mPWOGkI&)UqA__^(DdFx4GrI^(l`~6-X~hcX7rs9C#umgZ{Br|~`LlEB zZthOe0N^>-#Y1*`YHi)?MF}vkY%n3@GQQuNgB5775xADcV?KSfw0hiT=zQteAGG;{ z$AmSsys?X?%v6;u`)$z0>B1==N&hB$2;c{pb9U+~uB1^AmbX|Q+%i^t`z;*O5m8O; zvb7F95AOEpGRFN|q0k3MS+b7gDY6)QMM&4hmnshQz0p_D$9cA@9*7*3Br-H0Dk*uXHc)JNFl2t zN5-8vYS}|$r{qdK47S6^C#5C^C?g3NydM(^d7_Fo*I=_xk%zRU%`A!?d?p%3dJBIl ziZx2ORLo7~+2)mcHIr&vXvL-9^ECbbH z5QKXQ)htZ+1YV;Pl81fyCrKCs!V2WovwZ2dh^TH^ZfGi|O1`#86I&%bghnCwuE11_ zZhwv+D9hb;>6_8t3zv{-Gf^(9T@J`ZzI~4Qgz5{bWNz}%$zK^{RpAG2fbL4xGLd=; zxT!{)inawK?BLo!5HL3dL!o@)JFu`oP3)LM_h_}*%W;eTa+c+BSPbQCdoe0unNSX$ z?7#Jc{h9Y9{^3P=7RU~|Why;DgMA6Q@}IcBZVQ+2_6H63F6iBF+|lFjq2PCpE6D=d zd3)KMlC5@avfQe5d;D_|fcbO^1q*yyS32rLtto2oa!W#%%2Ld~C@SnIU5tzs#D}v% z8A&RlI93tvSSDTbRU(+>wa60NLG(1YMkpqU&R~U?WM;)T0f{yc8We{6lyNW;qB88A zprf8~2L7@+dPqxn%;5{5Z|Tu}Pi>^5r0FXL&Ehh(@U%$XY$OPl0G?}^$fbJA|Ef$j z1bp^PPo7C`oUM~UUF2cZ-ED?t@2UP-7-?K0pPYm;3#sC>5y(qBmV${btQ7b zl2dngc4;=>&E~boKJFea#K~f#WjGAtNo8YRg*9EzS?6Mo>eT`+~SdxG9wUHUe|jM|J>ZUJZVO! z3|nA&d#y<-{@WH~%b#ljd#|t1{B-zO?C&$VbB1-2E_=o0*5ypZ+KdK_ygVZ-IZ6e`a+s8K9IC+@ z%pgj%>lSirr4%(<7Lj@>P*QZrLyLe%)WU{ro3hHrjH0Qr98C>lJ_aolih!@x>M0_X z4vT5;$_9jxvJ!oP^V)O7-B#=MLRI_d!!h>l% znfA~c@SyuJBKi-|-lc<4NV*to0Dr>*(xS795Kf&}6%q~QkrY=LL^s(|B2ZAE9QR;* zpTujGSe^!I_1*IJ+J}7iiV`0#D)Grf3mr)|6%!Ihn7;^aKKN6BdKQ4PoQg_+MDq3< znOwOk_fhA|Q8no8tqSA@Vjr5Qp0^V}sm}oj&ez2Qg5>}pcjrQ&vFcdRy@r~7TH()C z!eW?ASvgV{*pFtJn>Z0`Osjx@@F%~3cMJUO87S?p0fZNmSg$Q7`0(z*gAA@`=Al9` z4laCncJOo668(|<_kOObTA(eAHIh{?YmD4b9rggbR!7{bvLtTK)caqUnf_^5P^EFWn z=9|em8W5v<%SeWMagNk*>5kBda&nh>o~VU3a;9cCGwD#L1qyfk;y$HVJVx@6Y0z^% zoh1e4XX>9jK?m13iHuy&N$&F}^ZyQsMY^2mStv$-F%&sFS|gBX-n$W%ga*Hn-Ni>aW)_P;t4GFc zx1F zV^(H`h(b(r;o-4D7!ozBz!wZ)aRE(Gb@ni6@{3#%-$o|IQb~vos+d)<5$=8f=9i#~ zru@hedg6(x8vzpH=UwatQV*_-WO`TA`|#=T<|V@$Yfq(`5QzlYmDfJ>$9#eG6Ru~H zanKZ{)Z?(Bf3JE$XRFr_$3;Ua%*|^QOhI5mmh9aSb$X&Bw+5iy0M20Doxt9XqtwVS zC?}|O0l_iSa~)==C%=Kajo9CS5DPRX2ALHR??AbHMicI~ z;TG7|l6{}%#7}i`IdTSG&erl24vLX1PvDox28T~GvjVUUA*z{`p@rO*bH&qB1V<)B zkQK8GN3;#eaH&O&B_)$#BKKL-qBm{D*TA$U3F~qpEvA9v0Clk|CvO2zp;ek1A|+s( z&RY`gegyf^p6m7Wi>pYZ3BhP9NEbS=s!v{@Trs!(_UKn;y>i~|(cI0>xx#g#ujqH) zhCh`p=K9r+Id~Y!BLU4{JyI>d?pC$nt(CExB`=-yyyw!H$4qkE`-fa3=!q^v`RcPT z9Ca|1fbGcs_k&D&6ev1?{!qrD%K%txaIq6R)zXrHoFfQHD8jo&B0B+ex0&3;4IZ!W ziAe5>=(~4_8vz`&SbP!8uE3-u40=ogNsj6vu4Rs(c+N8I6oX3ZNHS5`rAGGrg13a> zk`*0$q>59UV{3!1WR<0M$=Xu5AiiGLoE-#|x`}IEz6v!h+h#kJkfr3ymchOUVT4(l zyb?r?c1_Cc)~vhrVki_Zop75FYdf{@+kZ}XVAS$Ya@+${s7 z6oKjE3+;~&{VGE=Vg7P&33URX9<5@kXsMql!N`{dXF(i+qDt~(?~IZWnN02RpqCrM zt_t|8L7Xl;juNUWq)f1x)?AW{_at~~(C#3MkjGodwxlfNaENt7D$)NL8ecN9 z%hF@bS7SKor;5D<)bB8Ala8)?5nBN&AFTN8n2gUN^h?B{qC@Q6@8}?INqyp&I94$e zuk36AWX{9Iu71v8VkA_nbGDedH#WL=*s^!N$Hy@mC z+yWVdOko4lUFf4@$G_@e;9+}*31>S=Q0tYKys;lxB_o&=jUOOzt~yeSP`yeF@d~GEO!eOZu|* zbmC?%Uk7j$C|Ufg`;!aM9FpXuA6pJE+DT7)X#Z1ZReEm8%Zz>Oe4O+!2cV)&l=5j` zWCO7GDbiar3-#~^9j}2inq!}}-k)sB> z-?5-UcB+2_eYK(6q44+WcvrNvfan zG$+Dp(~NJcc>@748gYoK-E5{S00B8#wKsg`?GsyH-#_x{m3{tmFT2{_lQ*H0H%M zEw5TfAoeMQGVt`g$8a)o{L@~?aoEbDG$7!gXZ~GugWBt*%P5O>Td;N+zNep(40nN1 z0#oGS{!#NETtyJ8vTP=#v4c*=h+=WfA>MXt@PVH zl7+?7%@dr*G83I59e7eSK1aulHXI8s03IMuhcgL++>jLWOdkrq+MiIMGd71RObQ&1m zAKoSZ0nj|J=Z-HQ9DTJ4vTi3|kC~679?a_|TjTc8l2y?{9vq+aGt&LH>AcxOoi2((?G)`3wn1-Iqt=LyY#KK=sfXBFk+#M}#@56nEu<}O!03eusY%g1L zj_7viHEV5V6UF_GLKl8Lb^{1!& zpP$|mqYmue!d_p1pVx}Iv)Txh0YZ3u!H;Ofk1`c>fLP}=@;Te1_$G9~W~MKdwDj^e zp!GYIchA%JYwViSo+QG%P~KH+?CGs73V%lOCl>$ekPM7eC?v(_Lx}m`qpT>-MbE|g zjAqeiT9^1lSngLpbJn1=p zPvY4%9gbIzEi-xSK}TVCOS^Z^47hr(*63WcGW7?=Z}3#z)>+HeP9q)5QYRkQK8m3I zKLK0j9sgSn5sCDeYZ$?B%wvY<8CQ|=&BN1>*>d#aM2}$kieD)WE^yReMgFgwfhkqbaBgC z&fGU}g(qkmQ*%?(lE*(YY2G_I?kD;F1^iZ4KU=kfY*sOyo~ni0}tl6FH(bG>XtE$ zIA}5A|x*#Bg9_~TlfKd;y@IXrS+qyvIL!S2gx_}x$92PMLZrb-a zV#GILfxn@7_aizPfT25a-ag+^WP@gH+Ywjgfi1;nSh<_5)ZKL4ob-cbd)F|lc}JXc z_cJy^J(v(~out@LQ&TsDNp=9riSfE2T3ho>AX(%G8|TTr2b%T03Ypq+G+okUQ-oXP zGx6O5rs}>Zk);nN9AM$HFR|S27u{BW>b|9c zItWf<{KbL}*##^_K+r=tIpI$3tEqAGqKfMGUs`hevEWkgJZt}{LGk;1wS9N~l?|I! zmj7>s$zwaS^(L?9?O#5nxc-M{=DFJ40h#yyZuaTXerNyLE8KSS-&G}NjrpslirIXw z^~k(9+4|15OOw>k*UePlEg!U}Qt@`TBWDIfufzS0v F64 (f2 op) | l -> error_values "op" l +let al_to_i64op f = function + | [ CaseV ("I64", []); op ] -> I64 (f op) + | l -> error_values "op" l + let al_to_int_unop: value -> IntOp.unop = function | CaseV ("CLZ", []) -> IntOp.Clz | CaseV ("CTZ", []) -> IntOp.Ctz @@ -346,6 +350,19 @@ let al_to_cvtop: value list -> cvtop = function | CaseV ("F64", []) :: _ as op -> F64 (al_to_float_cvtop op) | l -> error_values "cvtop" l +let al_to_i64_wideop = function + | CaseV ("ADD", []) -> I64Op.Add128 + | CaseV ("SUB", []) -> I64Op.Sub128 + | v -> error_value "i64_wideop" v + +let al_to_wideop = al_to_i64op al_to_i64_wideop + +let al_to_i64_extwideop = function + | CaseV ("MUL_WIDE", [op]) -> I64Op.MulWide (al_to_sx op) + | v -> error_value "i64_extwideop" v + +let al_to_extwideop = al_to_i64op al_to_i64_extwideop + (* Vector operator *) let al_to_vop f1 f2 = function @@ -850,10 +867,8 @@ and al_to_instr': value -> Ast.instr' = function ArrayInitElem (al_to_idx idx1, al_to_idx idx2) | CaseV ("ANY.CONVERT_EXTERN", []) -> ExternConvert Internalize | CaseV ("EXTERN.CONVERT_ANY", []) -> ExternConvert Externalize - | CaseV ("ADD128", []) -> Binary128 Add128 - | CaseV ("SUB128", []) -> Binary128 Sub128 - | CaseV ("MUL_WIDE_S", []) -> BinaryWide MulS - | CaseV ("MUL_WIDE_U", []) -> BinaryWide MulU + | CaseV ("WIDEOP", op) -> Wide (al_to_wideop op) + | CaseV ("EXTWIDEOP", op) -> Extwide (al_to_extwideop op) | v -> error_value "instruction" v let al_to_const: value -> const = al_to_list al_to_instr |> al_to_phrase @@ -1382,6 +1397,27 @@ let al_of_cvtop = function let to_, op', sx = al_of_float_cvtop "64" op in [ nullary "F64"; nullary to_; caseV (op', sx) ] +let al_of_i64_wideop = function + | I64Op.Add128 -> CaseV ("ADD", []) + | I64Op.Sub128 -> CaseV ("SUB", []) + +let al_of_wideop (op: wideop) = + match op with + | I32 _ -> . + | I64 op -> [ nullary "I64"; al_of_i64_wideop op ] + | F32 _ -> . + | F64 _ -> . + +let al_of_i64_extwideop = function + | I64Op.MulWide sx -> CaseV ("MUL_WIDE", [ al_of_sx sx ]) + +let al_of_extwideop (op: extwideop) = + match op with + | I32 _ -> . + | I64 op -> [ nullary "I64"; al_of_i64_extwideop op ] + | F32 _ -> . + | F64 _ -> . + (* Vector operator *) let al_of_half = function @@ -1887,10 +1923,8 @@ let rec al_of_instr instr = CaseV ("ARRAY.INIT_ELEM", [ al_of_idx idx1; al_of_idx idx2 ]) | ExternConvert Internalize -> nullary "ANY.CONVERT_EXTERN" | ExternConvert Externalize -> nullary "EXTERN.CONVERT_ANY" - | Binary128 Add128 -> CaseV ("ADD128", []) - | Binary128 Sub128 -> CaseV ("SUB128", []) - | BinaryWide MulS -> CaseV ("MUL_WIDE_S", []) - | BinaryWide MulU -> CaseV ("MUL_WIDE_U", []) + | Wide op -> CaseV ("WIDEOP", al_of_wideop op) + | Extwide op -> CaseV ("EXTWIDEOP", al_of_extwideop op) (* | _ -> CaseV ("TODO: Unconstructed Wasm instruction (al_of_instr)", []) *) let al_of_const const = al_of_list al_of_instr const.it From 1e3e6eaad315c64be2a4be7c40b35a46fa80df90 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 19 Sep 2025 08:54:59 -0700 Subject: [PATCH 37/51] A small bit more progress --- .../wasm-3.0/3.1-numerics.scalar.spectec | 8 +- spectec/src/backend-interpreter/construct.ml | 8 +- spectec/test-frontend/TEST.md | 8 +- spectec/test-interpreter/TEST.md | 202 ++---------------- spectec/test-latex/.gitignore | 1 + spectec/test-latex/TEST.md | 6 +- spectec/test-middlend/TEST.md | 24 +-- 7 files changed, 45 insertions(+), 212 deletions(-) diff --git a/specification/wasm-3.0/3.1-numerics.scalar.spectec b/specification/wasm-3.0/3.1-numerics.scalar.spectec index 6b9141afe1..c3ba56ade5 100644 --- a/specification/wasm-3.0/3.1-numerics.scalar.spectec +++ b/specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -457,16 +457,16 @@ def $isplit_(Inn, N, i_1) = ( $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn))), ) -def $binop128_(numtype, N, wideop_(numtype), iN(N), iN(N)) : iN(N) -def $binop128_(Inn, N, ADD128, i_1, i_2) = $iadd_(N, i_1, i_2) -def $binop128_(Inn, N, SUB128, i_1, i_2) = $isub_(N, i_1, i_2) +def $wideop_(numtype, N, wideop_(numtype), iN(N), iN(N)) : iN(N) +def $wideop_(Inn, N, ADD128, i_1, i_2) = $iadd_(N, i_1, i_2) +def $wideop_(Inn, N, SUB128, i_1, i_2) = $isub_(N, i_1, i_2) def $wideop__(numtype, wideop_(numtype), num_(numtype), num_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) def $wideop__(Inn, wideop, i_1, i_2, i_3, i_4) = $isplit_( Inn, 128, - $binop128_( + $wideop_( Inn, 128, wideop, diff --git a/spectec/src/backend-interpreter/construct.ml b/spectec/src/backend-interpreter/construct.ml index dc27b0c038..8d4a78df8f 100644 --- a/spectec/src/backend-interpreter/construct.ml +++ b/spectec/src/backend-interpreter/construct.ml @@ -351,8 +351,8 @@ let al_to_cvtop: value list -> cvtop = function | l -> error_values "cvtop" l let al_to_i64_wideop = function - | CaseV ("ADD", []) -> I64Op.Add128 - | CaseV ("SUB", []) -> I64Op.Sub128 + | CaseV ("ADD128", []) -> I64Op.Add128 + | CaseV ("SUB128", []) -> I64Op.Sub128 | v -> error_value "i64_wideop" v let al_to_wideop = al_to_i64op al_to_i64_wideop @@ -1398,8 +1398,8 @@ let al_of_cvtop = function [ nullary "F64"; nullary to_; caseV (op', sx) ] let al_of_i64_wideop = function - | I64Op.Add128 -> CaseV ("ADD", []) - | I64Op.Sub128 -> CaseV ("SUB", []) + | I64Op.Add128 -> CaseV ("ADD128", []) + | I64Op.Sub128 -> CaseV ("SUB128", []) let al_of_wideop (op: wideop) = match op with diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 3d2f7b2f7b..578a0725fc 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -4933,16 +4933,16 @@ def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtyp def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index f39a4b6ea5..aca37c9cc0 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -1553,207 +1553,39 @@ spectec 0.5 generator - 0/0 (100.00%) ===== ../test-interpreter/spec-test-3/wide-arithmetic.wast ===== -../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:29.1-32.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:29.1-32.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:33.1-36.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:33.1-36.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:37.1-40.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:37.1-40.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:43.1-46.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:43.1-46.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:47.1-50.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:47.1-50.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:51.1-54.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:51.1-54.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:55.1-58.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:55.1-58.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:61.1-62.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:61.1-62.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:63.1-64.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:63.1-64.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:65.1-66.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:65.1-66.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:67.1-68.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:67.1-68.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:73.1-74.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:73.1-74.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:77.1-80.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:77.1-80.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:81.1-84.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:81.1-84.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:85.1-88.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:85.1-88.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:89.1-92.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:89.1-92.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:93.1-96.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:93.1-96.46 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:97.1-100.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:97.1-100.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:101.1-104.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:101.1-104.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:105.1-108.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:105.1-108.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:109.1-112.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:109.1-112.62 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:113.1-116.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:113.1-116.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:117.1-120.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:117.1-120.45 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:121.1-124.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:121.1-124.63 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:125.1-128.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:125.1-128.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:129.1-132.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:129.1-132.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:133.1-136.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:133.1-136.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:137.1-140.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:137.1-140.81 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:141.1-144.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:141.1-144.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:145.1-148.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:145.1-148.63 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:149.1-152.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:149.1-152.64 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:153.1-156.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:153.1-156.62 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:160.1-163.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:160.1-163.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:164.1-167.82 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:164.1-167.82 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:168.1-171.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:168.1-171.62 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:172.1-175.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:172.1-175.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:176.1-179.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:176.1-179.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:180.1-183.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:180.1-183.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:184.1-187.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:184.1-187.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:188.1-191.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:188.1-191.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:192.1-195.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:192.1-195.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:196.1-199.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:196.1-199.46 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:200.1-203.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:200.1-203.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:204.1-207.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:204.1-207.62 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:208.1-211.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:208.1-211.63 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:212.1-215.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:212.1-215.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:216.1-219.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:216.1-219.45 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:220.1-223.80 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:220.1-223.80 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:224.1-227.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:224.1-227.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:228.1-231.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:228.1-231.81 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:232.1-235.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:232.1-235.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:236.1-239.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:236.1-239.64 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:242.1-243.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:242.1-243.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:244.1-245.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:244.1-245.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:250.1-251.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:250.1-251.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:256.1-257.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:256.1-257.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:266.1-267.61 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:266.1-267.61 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:268.1-269.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:268.1-269.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:274.1-275.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:274.1-275.62 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:280.1-281.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:280.1-281.44 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:284.1-285.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:284.1-285.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:286.1-287.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:286.1-287.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:288.1-289.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:288.1-289.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:290.1-291.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:290.1-291.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:292.1-293.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:292.1-293.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:294.1-295.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:294.1-295.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:296.1-297.61 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:296.1-297.61 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:298.1-299.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:298.1-299.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:300.1-301.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:300.1-301.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:302.1-303.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:302.1-303.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:304.1-305.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:304.1-305.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:306.1-307.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:306.1-307.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:308.1-309.63 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:308.1-309.63 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:310.1-311.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:310.1-311.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:312.1-313.80 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:312.1-313.80 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:314.1-315.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:314.1-315.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:316.1-317.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:316.1-317.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:318.1-319.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:318.1-319.81 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:320.1-321.45 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:320.1-321.45 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:322.1-323.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:322.1-323.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:385.1-388.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:385.1-388.44 (Algorithm not found: ADD128 (interpreting CaseV(ADD128, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:389.1-392.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:389.1-392.44 (Algorithm not found: SUB128 (interpreting CaseV(SUB128, []) at )) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) ../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 (Algorithm not found: MUL_WIDE_S (interpreting CaseV(MUL_WIDE_S, []) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:395.1-396.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:395.1-396.44 (Algorithm not found: MUL_WIDE_U (interpreting CaseV(MUL_WIDE_U, []) at )) -- 12/111 (10.81%) +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) +- 96/111 (86.49%) -Total [60352/60451] (99.84%) +Total [60436/60451] (99.98%) == Complete. ``` diff --git a/spectec/test-latex/.gitignore b/spectec/test-latex/.gitignore index 426699a0ad..b1a8aad0ec 100644 --- a/spectec/test-latex/.gitignore +++ b/spectec/test-latex/.gitignore @@ -3,3 +3,4 @@ *.pdf spec-gen-include.tex _log +test-test.el diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 813cb7641f..6f8f661008 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -8359,8 +8359,8 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(N, \mathsf{add{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{iadd}}}_{N}(i_1, i_2) \\ -{{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(N, \mathsf{sub{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{isub}}}_{N}(i_1, i_2) \\ +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{add{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{iadd}}}_{N}(i_1, i_2) \\ +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{sub{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{isub}}}_{N}(i_1, i_2) \\ \end{array} $$ @@ -8369,7 +8369,7 @@ $$ {{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4) & = & & \\ \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} -{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{binop{\kern-0.1em\scriptstyle 128}}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4))) \\ +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4))) \\ \end{array} } \\ \end{array} diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 7b582ea79a..480400cf25 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -4923,16 +4923,16 @@ def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtyp def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) @@ -16339,16 +16339,16 @@ def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtyp def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) @@ -27881,16 +27881,16 @@ def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtyp def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $binop128_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop128_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $binop128_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) From 3f4e3eb58ae76c9face4b7fd098db89d7a32d390 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 19 Sep 2025 08:57:20 -0700 Subject: [PATCH 38/51] More updates --- .github/workflows/ci-interpreter.yml | 2 ++ spectec/doc/example/output/NanoWasm.pdf | Bin 245513 -> 245513 bytes spectec/test-prose/TEST.md | 10 +++++----- spectec/test-splice/TEST.md | 4 ++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 28013deb9f..819d792c30 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -31,4 +31,6 @@ jobs: - name: Build interpreter run: cd interpreter && opam exec make - name: Run tests + # TODO: reactivate node once it supports all of Wasm 3.0 + # run: cd interpreter && opam exec make JS=node ci run: cd interpreter && opam exec make ci diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 146eee6611f7919e144b65c28cabc31cd6d9ad26..1818ffbd6262fc363362f84bdd5d7cb77258b682 100644 GIT binary patch delta 249 zcmeDD$JhCfZ$pU?Q_A|uWkTkbmg;}zY z;vS~ao$jS!o%3e#YKvR%3TnzsZ@$YenVOM2`I(TM>9h0N?+?3b_?_hYYZNgnZ%@RV z;vS=D-fCaYP}|>=#8=7somPE5Tb09e&iVEG_G&*9&wAz)-E1k`ZYj(N#7x^Qg_&>OJ{ delta 249 zcmeDD$JhCfZ$pU?Q_i}{WkTkbzLP%`-;)wls=jFQlz+>!m#22?rj^P|2<=Hrof6)$ zqJK?**!d{|WjAiPhZk Date: Fri, 19 Sep 2025 09:17:54 -0700 Subject: [PATCH 39/51] Attempt a fix --- .../wasm-3.0/3.1-numerics.scalar.spectec | 8 ++-- spectec/doc/example/output/NanoWasm.pdf | Bin 245513 -> 245513 bytes spectec/test-frontend/TEST.md | 4 +- spectec/test-interpreter/TEST.md | 36 ++---------------- spectec/test-latex/TEST.md | 2 +- spectec/test-middlend/TEST.md | 12 +++--- spectec/test-prose/TEST.md | 6 +-- 7 files changed, 19 insertions(+), 49 deletions(-) diff --git a/specification/wasm-3.0/3.1-numerics.scalar.spectec b/specification/wasm-3.0/3.1-numerics.scalar.spectec index c3ba56ade5..d9e80c8711 100644 --- a/specification/wasm-3.0/3.1-numerics.scalar.spectec +++ b/specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -447,8 +447,8 @@ def $iconcat_(numtype, N, num_(numtype), num_(numtype)) : iN(N) def $iconcat_(Inn, N, i_1, i_2) = $ior_( N, - $iextend_($sizenn(Inn), N, U, i_1), - $ishl_(N, $iextend_($sizenn(Inn), N, U, i_2), $sizenn(Inn)), + $iextend_(N, $sizenn(Inn), U, i_1), + $ishl_(N, $iextend_(N, $sizenn(Inn), U, i_2), $sizenn(Inn)), ) def $isplit_(numtype, N, iN(N)) : (num_(numtype), num_(numtype)) @@ -482,7 +482,7 @@ def $extwideop__(Inn, MUL_WIDE sx, i_1, i_2) = 128, $imul_( 128, - $iextend_($sizenn(Inn), 128, sx, i_1), - $iextend_($sizenn(Inn), 128, sx, i_2), + $iextend_(128, $sizenn(Inn), sx, i_1), + $iextend_(128, $sizenn(Inn), sx, i_2), ) ) diff --git a/spectec/doc/example/output/NanoWasm.pdf b/spectec/doc/example/output/NanoWasm.pdf index 1818ffbd6262fc363362f84bdd5d7cb77258b682..29ca0aec936e5a5067b9a869ef21226bc56e09ba 100644 GIT binary patch delta 112 zcmeDD$JhCfuc3vpg=q`3@K#n!Lo-9m=@MI+!k+}unJ%}h;9jhyThYzQgY{%tq2Ff#z%KOHsz delta 112 zcmeDD$JhCfuc3vpg=q`3@K#m}Q%ggm=@MI+d-9L?+$YzQgY{%tq2Ff#xIsU9!@ diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 578a0725fc..a2a33d1b2b 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -4925,7 +4925,7 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) @@ -4947,7 +4947,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index aca37c9cc0..8733511b6a 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -1553,39 +1553,9 @@ spectec 0.5 generator - 0/0 (100.00%) ===== ../test-interpreter/spec-test-3/wide-arithmetic.wast ===== -../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:69.1-70.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:71.1-72.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:246.1-247.64 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:248.1-249.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:252.1-253.80 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:254.1-255.82 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:258.1-259.62 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:260.1-261.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:262.1-263.62 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:264.1-265.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:270.1-271.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:272.1-273.44 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:276.1-277.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:278.1-279.81 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 -- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:393.1-394.46 ($inv_signed_: on expr `(i < $int$(0))` assertion fail (interpreting Assert ((i < $int$(0))) at )) -- 96/111 (86.49%) - -Total [60436/60451] (99.98%) +- 111/111 (100.00%) + +Total [60451/60451] (100.00%) == Complete. ``` diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 6f8f661008..34e884526c 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -8380,7 +8380,7 @@ $$ {{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2) & = & & \\ \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} -{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_2)})) \\ +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_2)})) \\ \end{array} } \\ \end{array} diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index 480400cf25..5d95551729 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -4915,7 +4915,7 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) @@ -4937,7 +4937,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -16331,7 +16331,7 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) @@ -16353,7 +16353,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -27873,7 +27873,7 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_1)!`%`_iN.0), $ishl_(N, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), N, U_sx, i_2)!`%`_iN.0), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) @@ -27895,7 +27895,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_1)!`%`_iN.0), `%`_iN($iextend_($sizenn((Inn : Inn <: numtype)), 128, sx, i_2)!`%`_iN.0))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index 4584f7da44..726ead184d 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -24412,7 +24412,7 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i ............................................................................................................ -1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{N, 128}^{{\mathit{sx}}}}}{(i_2)}))`. +1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_2)}))`. :math:`{\mathrm{zeroop}}({{\mathit{lanetype}'}}{\mathsf{x}}{M_1}, {{\mathit{lanetype}}}{\mathsf{x}}{M_2}, {\mathit{vcvtop}})` @@ -31998,7 +31998,7 @@ cvtop__ numtype numtype' cvtop__ i_1 10. Return [$reinterpret__(numtype, numtype', i_1)]. iconcat_ Inn N i_1 i_2 -1. Return $ior_(N, $iextend_($sizenn(Inn), N, U, i_1), $ishl_(N, $iextend_($sizenn(Inn), N, U, i_2), $sizenn(Inn))). +1. Return $ior_(N, $iextend_(N, $sizenn(Inn), U, i_1), $ishl_(N, $iextend_(N, $sizenn(Inn), U, i_2), $sizenn(Inn))). isplit_ Inn N i_1 1. Return ($wrap__(N, $sizenn(Inn), i_1), $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn)))). @@ -32013,7 +32013,7 @@ wideop__ Inn wideop i_1 i_2 i_3 i_4 1. Return $isplit_(Inn, 128, $wideop_(Inn, 128, wideop, $iconcat_(Inn, 128, i_1, i_2), $iconcat_(Inn, 128, i_3, i_4))). extwideop__ Inn (MUL_WIDE sx) i_1 i_2 -1. Return $isplit_(Inn, 128, $imul_(128, $iextend_($sizenn(Inn), 128, sx, i_1), $iextend_($sizenn(Inn), 128, sx, i_2))). +1. Return $isplit_(Inn, 128, $imul_(128, $iextend_(128, $sizenn(Inn), sx, i_1), $iextend_(128, $sizenn(Inn), sx, i_2))). zeroop lanetype' X M_1 lanetype X M_2 vcvtop__ 1. If lanetype' is Jnn, then: From b88f61c4843df103bb019b86aaafd0a1c234057a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 21 Sep 2025 08:01:43 -0700 Subject: [PATCH 40/51] Update README links Now that the rebased spec is rendered --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 971cde205e..4f98940efc 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,6 @@ currently [at phase 3 in the proposals process][phase]. * [new abstract syntax](https://webassembly.github.io/wide-arithmetic/core/syntax/instructions.html#numeric-instructions) * [new binary opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/binary/instructions.html#numeric-instructions) * [new text opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/text/instructions.html#numeric-instructions) - * [new validation](https://webassembly.github.io/wide-arithmetic/core/valid/instructions.html#xref-syntax-types-syntax-valtype-mathsf-i64-mathsf-xref-syntax-instructions-syntax-binop-mathit-binop-mathsf-128) - * [new execution](https://webassembly.github.io/wide-arithmetic/core/exec/instructions.html#xref-syntax-types-syntax-valtype-mathsf-i64-mathsf-xref-syntax-instructions-syntax-binop-mathit-binop-mathsf-128) + * [new validation](https://webassembly.github.io/wide-arithmetic/core/valid/instructions.html#numeric-instructions) + * [new execution](https://webassembly.github.io/wide-arithmetic/core/exec/instructions.html#numeric-instructions) * [new helper functions](https://webassembly.github.io/wide-arithmetic/core/exec/numerics.html#xref-exec-numerics-op-iconcat-mathrm-iconcat-m-n-i-1-i-2) From 5f7f6deb1c88484a9d5550b3514e5b3ff1e166db Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 21 Sep 2025 08:16:40 -0700 Subject: [PATCH 41/51] Add a diff-to-main link --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 4f98940efc..3308ccfce8 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,9 @@ currently [at phase 3 in the proposals process][phase]. * [new validation](https://webassembly.github.io/wide-arithmetic/core/valid/instructions.html#numeric-instructions) * [new execution](https://webassembly.github.io/wide-arithmetic/core/exec/instructions.html#numeric-instructions) * [new helper functions](https://webassembly.github.io/wide-arithmetic/core/exec/numerics.html#xref-exec-numerics-op-iconcat-mathrm-iconcat-m-n-i-1-i-2) + +* See the [diff from the upstream spec][diff] for a diff-style view of this + proposal. + + +[diff]: https://github.com/webassembly/wide-arithmetic/compare/e01ace5eb7c88ce58e444f1700c1bf4175e47e28...main From cd00377cb4a787de6e4ad3d3a25ebe7cc9181f4b Mon Sep 17 00:00:00 2001 From: CharlieTap Date: Thu, 25 Sep 2025 18:08:30 +0100 Subject: [PATCH 42/51] add chasm to supported engine list --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index af05f35d7a..685203c4e0 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -288,6 +288,7 @@ Engines: * [x] [Wasmtime](https://github.com/bytecodealliance/wasmtime/pull/9403) * [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) * [x] [Wasmi](https://github.com/wasmi-labs/wasmi/pull/1383) +* [x] [Chasm](https://github.com/CharlieTap/chasm/pull/110) Toolchains: From 00acf2a01daabe831ef5e36259c9c0255c82882b Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Thu, 8 Jan 2026 09:28:38 +0800 Subject: [PATCH 43/51] Add wasm-language-tools to list of implementations --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 685203c4e0..853eb325b8 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -304,6 +304,7 @@ Validation: * [x] [`wasmparser` in `wasm-tools`](https://github.com/bytecodealliance/wasm-tools/pull/1853) * [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) +* [x] [`wat_service` in wasm-language-tools](https://github.com/g-plane/wasm-language-tools/commit/9950e494d369da95595bfc10be8fc12be4302aff) Binary encoders: From a0d5f91bf08015b516a1cf2e9ab16c4ad5b42e51 Mon Sep 17 00:00:00 2001 From: Keith Miller Date: Thu, 16 Apr 2026 17:11:04 -0400 Subject: [PATCH 44/51] Add JavaScriptCore to implementations JSC added support in https://commits.webkit.org/311366@main for wide arithmetic behind a flag (useWasmWideArithmetic). --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 853eb325b8..0b6eae4043 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -289,6 +289,7 @@ Engines: * [x] [Reference interpreter](https://github.com/WebAssembly/wide-arithmetic/pull/22) * [x] [Wasmi](https://github.com/wasmi-labs/wasmi/pull/1383) * [x] [Chasm](https://github.com/CharlieTap/chasm/pull/110) +* [x] [JavaScriptCore](https://commits.webkit.org/311366@main) Toolchains: From fc7cc90d1351286abfca7ca38adff1a5fd8133c3 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Apr 2026 16:35:02 -0700 Subject: [PATCH 45/51] Add SpiderMonkey implementation --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 0b6eae4043..3800132877 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -290,6 +290,7 @@ Engines: * [x] [Wasmi](https://github.com/wasmi-labs/wasmi/pull/1383) * [x] [Chasm](https://github.com/CharlieTap/chasm/pull/110) * [x] [JavaScriptCore](https://commits.webkit.org/311366@main) +* [x] [SpiderMonkey](https://bugzilla.mozilla.org/show_bug.cgi?id=1949081) Toolchains: From 708979986da9d4ea9bcb2ee87764ded812b69eac Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Fri, 24 Apr 2026 11:18:09 +0200 Subject: [PATCH 46/51] include Wasmer implementation link --- proposals/wide-arithmetic/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/proposals/wide-arithmetic/Overview.md b/proposals/wide-arithmetic/Overview.md index 3800132877..13664ce5ef 100644 --- a/proposals/wide-arithmetic/Overview.md +++ b/proposals/wide-arithmetic/Overview.md @@ -291,6 +291,7 @@ Engines: * [x] [Chasm](https://github.com/CharlieTap/chasm/pull/110) * [x] [JavaScriptCore](https://commits.webkit.org/311366@main) * [x] [SpiderMonkey](https://bugzilla.mozilla.org/show_bug.cgi?id=1949081) +* [x] [Wasmer](https://github.com/wasmerio/wasmer/pull/6243) Toolchains: From ced77734cb2c98e908b857ffbe8d4cc050d8a8ba Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 10 Aug 2026 08:17:59 -0700 Subject: [PATCH 47/51] Reduce some diff with the upstream spec --- .github/workflows/ci-interpreter.yml | 23 +- document/core/exec/instructions.rst | 2 +- document/core/exec/numerics.rst | 10 +- interpreter/syntax/mnemonics.ml | 2 +- interpreter/text/lexer.mll | 2 +- interpreter/valid/valid.ml | 2 +- .../wasm-3.0/1.2-syntax.types.spectec | 2 +- .../wasm-3.0/1.3-syntax.instructions.spectec | 10 - .../2.3-validation.instructions.spectec | 6 - .../wasm-3.0/3.1-numerics.scalar.spectec | 46 - .../4.3-execution.instructions.spectec | 9 - .../wasm-3.0/5.3-binary.instructions.spectec | 7 - .../wasm-3.0/6.3-text.instructions.spectec | 7 - .../1.3-syntax.instructions.spectec | 10 + .../2.3-validation.instructions.spectec | 6 + .../wasm-latest/3.1-numerics.scalar.spectec | 46 + .../4.3-execution.instructions.spectec | 9 + .../5.3-binary.instructions.spectec | 7 + .../wasm-latest/6.3-text.instructions.spectec | 7 + spectec/test-frontend/TEST.md | 7610 ++--- spectec/test-interpreter/TEST.md | 1554 +- spectec/test-latex/TEST.md | 3700 ++- spectec/test-middlend/TEST.md | 24524 +++++++++------- spectec/test-splice/TEST.md | 245 +- 24 files changed, 20001 insertions(+), 17845 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 819d792c30..d57bc20345 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -21,16 +21,19 @@ jobs: - name: Setup OCaml uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.14.x + ocaml-compiler: 5.04.x - name: Setup OCaml tools - run: opam install --yes ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 stdint.0.7.2 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20.x + run: opam install --yes stdint.0.7.2 - name: Build interpreter - run: cd interpreter && opam exec make + run: cd interpreter && opam exec make jsdeps wasm + # Neither V8 nor SpiderMonkey can currently handle all 3.0 tests, so we disable checking JS translation for now. + #- name: Setup Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: 25-nightly + #- name: Setup SpiderMonkey + # run: curl -O https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/jsshell-linux-x86_64.zip && unzip jsshell-linux-x86_64.zip - name: Run tests - # TODO: reactivate node once it supports all of Wasm 3.0 - # run: cd interpreter && opam exec make JS=node ci - run: cd interpreter && opam exec make ci + run: cd interpreter && opam exec make ci # don't test JS translation + # run: cd interpreter && opam exec make JS=node ci # test with V8 + # run: cd interpreter && opam exec make JS=../js ci # test with SM diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index d076cec485..06cff1c012 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -753,7 +753,7 @@ $${rule: {Step_read/struct.get-*}} $${rule-prose: Step/struct.set} $${rule: {Step/struct.set-*}} - + .. _exec-array.new: diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 280e3b95df..623a4f9317 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1854,9 +1854,9 @@ Conversions :math:`\truncu_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * Else if :math:`z` is a number and :math:`\truncz(z)` is a value within range of the target type, then return that value. @@ -1877,9 +1877,9 @@ Conversions :math:`\truncs_{M,N}(z)` ........................ -* If :math:`z` is a NaN, then the result is undefined. +* If :math:`z` is a NaN, then the result is undefined. -* Else if :math:`z` is an infinity, then the result is undefined. +* Else if :math:`z` is an infinity, then the result is undefined. * If :math:`z` is a number and :math:`\truncz(z)` is a value within range of the target type, then return that value. @@ -2223,7 +2223,7 @@ The previous operators are lifted to operators on arguments of vector type by wr \land~j^\ast = \ivaddpairwise_{N_2}({i'}^\ast) \\ \end{array} \end{array} - + .. _op-vextbinop: diff --git a/interpreter/syntax/mnemonics.ml b/interpreter/syntax/mnemonics.ml index 812d03c5ed..01c0a67ade 100644 --- a/interpreter/syntax/mnemonics.ml +++ b/interpreter/syntax/mnemonics.ml @@ -170,7 +170,7 @@ let memory_init x y = MemoryInit (x, y) let data_drop x = DataDrop x let ref_is_null = RefIsNull -let ref_as_non_null = RefAsNonNull +let ref_as_non_null = RefAsNonNull let ref_test t = RefTest t let ref_cast t = RefCast t let ref_eq = RefEq diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index d8fc7fb9ad..62a2783caf 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -89,7 +89,7 @@ let character = [^'"''\\''\x00'-'\x1f''\x7f'-'\xff'] | utf8enc | '\\'escape - | '\\'hexdigit hexdigit + | '\\'hexdigit hexdigit | "\\u{" hexnum '}' let nat = num | "0x" hexnum diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 884d86561f..bf7a73eff9 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -626,7 +626,7 @@ let rec check_instr (c : context) (e : instr) (s : infer_resulttype) : infer_ins | TableFill x -> let TableT (at, _lim, rt) = table c x in - [NumT (numtype_of_addrtype at); RefT rt; + [NumT (numtype_of_addrtype at); RefT rt; NumT (numtype_of_addrtype at)] --> [], [] | TableCopy (x, y) -> diff --git a/specification/wasm-3.0/1.2-syntax.types.spectec b/specification/wasm-3.0/1.2-syntax.types.spectec index fed667ff08..1769880a6d 100644 --- a/specification/wasm-3.0/1.2-syntax.types.spectec +++ b/specification/wasm-3.0/1.2-syntax.types.spectec @@ -557,7 +557,7 @@ def $free_tagtype(deftype) = $free_deftype(deftype) def $free_globaltype(mut? valtype) = $free_valtype(valtype) def $free_memtype(addrtype limits PAGE) = $free_addrtype(addrtype) - + def $free_tabletype(addrtype limits reftype) = $free_addrtype(addrtype) ++ $free_reftype(reftype) diff --git a/specification/wasm-3.0/1.3-syntax.instructions.spectec b/specification/wasm-3.0/1.3-syntax.instructions.spectec index ff51d44697..8571df71d6 100644 --- a/specification/wasm-3.0/1.3-syntax.instructions.spectec +++ b/specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -38,14 +38,6 @@ syntax binop_(Inn) = | AND | OR | XOR | SHL | SHR sx hint(show SHR#_#%) | ROTL | ROTR syntax binop_(Fnn) = | ADD | SUB | MUL | DIV | MIN hint(macro "FMIN") | MAX hint(macro "FMAX") | COPYSIGN -syntax wideop_(numtype) -syntax wideop_(Inn) = - | ADD128 -- if $sizenn(Inn) = 64 - | SUB128 -- if $sizenn(Inn) = 64 - -syntax extwideop_(numtype) -syntax extwideop_(Inn) = - | MUL_WIDE sx hint(show MUL_WIDE#_#%) -- if $sizenn(Inn) = 64 syntax testop_(numtype) syntax testop_(Inn) = EQZ @@ -364,8 +356,6 @@ syntax instr/num hint(desc "numeric instruction") = ... | TESTOP numtype testop_(numtype) hint(show %.##%) | RELOP numtype relop_(numtype) hint(show %.##%) | CVTOP numtype_1 numtype_2 cvtop__(numtype_2, numtype_1) hint(show %1.##%3#_#%2) - | WIDEOP numtype wideop_(numtype) hint(show %.##%) - | EXTWIDEOP numtype extwideop_(numtype) hint(show %.##%) | ... syntax instr/vec hint(desc "vector instruction") = ... diff --git a/specification/wasm-3.0/2.3-validation.instructions.spectec b/specification/wasm-3.0/2.3-validation.instructions.spectec index 7963e083f7..62ec9c61db 100644 --- a/specification/wasm-3.0/2.3-validation.instructions.spectec +++ b/specification/wasm-3.0/2.3-validation.instructions.spectec @@ -535,12 +535,6 @@ rule Instr_ok/relop: rule Instr_ok/cvtop: C |- CVTOP nt_1 nt_2 cvtop : nt_2 -> nt_1 -rule Instr_ok/wideop: - C |- WIDEOP nt wideop_nt : nt nt nt nt -> nt nt - -rule Instr_ok/extwideop: - C |- EXTWIDEOP nt extwideop_nt : nt nt -> nt nt - ;; Vector instructions diff --git a/specification/wasm-3.0/3.1-numerics.scalar.spectec b/specification/wasm-3.0/3.1-numerics.scalar.spectec index 719864cabc..7ac9dad593 100644 --- a/specification/wasm-3.0/3.1-numerics.scalar.spectec +++ b/specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -440,49 +440,3 @@ def $cvtop__(Inn_1, Fnn_2, REINTERPRET, i_1) = $reinterpret__(Inn_1, Fnn_2, i_1) -- if $size(Inn_1) = $size(Fnn_2) ;; TODO(3, rossberg): make implicit def $cvtop__(Fnn_1, Inn_2, REINTERPRET, f_1) = $reinterpret__(Fnn_1, Inn_2, f_1) -- if $size(Fnn_1) = $size(Inn_2) ;; TODO(3, rossberg): make implicit - -;; wide-arithmetic helpers and implementation - -def $iconcat_(numtype, N, num_(numtype), num_(numtype)) : iN(N) -def $iconcat_(Inn, N, i_1, i_2) = - $ior_( - N, - $iextend_(N, $sizenn(Inn), U, i_1), - $ishl_(N, $iextend_(N, $sizenn(Inn), U, i_2), $sizenn(Inn)), - ) - -def $isplit_(numtype, N, iN(N)) : (num_(numtype), num_(numtype)) -def $isplit_(Inn, N, i_1) = ( - $wrap__(N, $sizenn(Inn), i_1), - $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn))), -) - -def $wideop_(numtype, N, wideop_(numtype), iN(N), iN(N)) : iN(N) -def $wideop_(Inn, N, ADD128, i_1, i_2) = $iadd_(N, i_1, i_2) -def $wideop_(Inn, N, SUB128, i_1, i_2) = $isub_(N, i_1, i_2) - -def $wideop__(numtype, wideop_(numtype), num_(numtype), num_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) -def $wideop__(Inn, wideop, i_1, i_2, i_3, i_4) = - $isplit_( - Inn, - 128, - $wideop_( - Inn, - 128, - wideop, - $iconcat_(Inn, 128, i_1, i_2), - $iconcat_(Inn, 128, i_3, i_4), - ) - ) - -def $extwideop__(numtype, extwideop_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) -def $extwideop__(Inn, MUL_WIDE sx, i_1, i_2) = - $isplit_( - Inn, - 128, - $imul_( - 128, - $iextend_(128, $sizenn(Inn), sx, i_1), - $iextend_(128, $sizenn(Inn), sx, i_2), - ) - ) diff --git a/specification/wasm-3.0/4.3-execution.instructions.spectec b/specification/wasm-3.0/4.3-execution.instructions.spectec index 95724925e6..65e3de4aeb 100644 --- a/specification/wasm-3.0/4.3-execution.instructions.spectec +++ b/specification/wasm-3.0/4.3-execution.instructions.spectec @@ -988,15 +988,6 @@ rule Step_pure/cvtop-trap: -- if $cvtop__(nt_1, nt_2, cvtop, c_1) = eps -rule Step_pure/wideop: - (CONST nt c_1) (CONST nt c_2) (CONST nt c_3) (CONST nt c_4) (WIDEOP nt wideop_nt) ~> (CONST nt c_5) (CONST nt c_6) - -- if (c_5, c_6) <- $wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4) - -rule Step_pure/extwideop: - (CONST nt c_1) (CONST nt c_2) (EXTWIDEOP nt extwideop_nt) ~> (CONST nt c_5) (CONST nt c_6) - -- if (c_5, c_6) <- $extwideop__(nt, extwideop_nt, c_1, c_2) - - ;; Vector instructions rule Step_pure/vvunop: diff --git a/specification/wasm-3.0/5.3-binary.instructions.spectec b/specification/wasm-3.0/5.3-binary.instructions.spectec index 37b5c63080..a08d138777 100644 --- a/specification/wasm-3.0/5.3-binary.instructions.spectec +++ b/specification/wasm-3.0/5.3-binary.instructions.spectec @@ -386,13 +386,6 @@ grammar Binstr/num-cvt-sat : instr = ... | 0xFC 7:Bu32 => CVTOP I64 F64 TRUNC_SAT U | ... -grammar Binstr/num-wide : instr = ... - | 0xFC 13:Bu32 => WIDEOP I64 ADD128 - | 0xFC 14:Bu32 => WIDEOP I64 SUB128 - | 0xFC 15:Bu32 => EXTWIDEOP I64 MUL_WIDE S - | 0xFC 16:Bu32 => EXTWIDEOP I64 MUL_WIDE U - | ... - ;; Vector instructions diff --git a/specification/wasm-3.0/6.3-text.instructions.spectec b/specification/wasm-3.0/6.3-text.instructions.spectec index 7869e0a816..645eb8325f 100644 --- a/specification/wasm-3.0/6.3-text.instructions.spectec +++ b/specification/wasm-3.0/6.3-text.instructions.spectec @@ -551,13 +551,6 @@ grammar Tplaininstr_(I)/num-cvt-reinterpret : instr = ... | "f64.reinterpret_i64" => CVTOP F64 I64 REINTERPRET | ... -grammar Tplaininstr_(I)/num-wide : instr = ... - | "i64.add128" => WIDEOP I64 ADD128 - | "i64.sub128" => WIDEOP I64 SUB128 - | "i64.mul_wide_s" => EXTWIDEOP I64 MUL_WIDE S - | "i64.mul_wide_u" => EXTWIDEOP I64 MUL_WIDE U - | ... - ;; Vector instructions diff --git a/specification/wasm-latest/1.3-syntax.instructions.spectec b/specification/wasm-latest/1.3-syntax.instructions.spectec index 8571df71d6..ff51d44697 100644 --- a/specification/wasm-latest/1.3-syntax.instructions.spectec +++ b/specification/wasm-latest/1.3-syntax.instructions.spectec @@ -38,6 +38,14 @@ syntax binop_(Inn) = | AND | OR | XOR | SHL | SHR sx hint(show SHR#_#%) | ROTL | ROTR syntax binop_(Fnn) = | ADD | SUB | MUL | DIV | MIN hint(macro "FMIN") | MAX hint(macro "FMAX") | COPYSIGN +syntax wideop_(numtype) +syntax wideop_(Inn) = + | ADD128 -- if $sizenn(Inn) = 64 + | SUB128 -- if $sizenn(Inn) = 64 + +syntax extwideop_(numtype) +syntax extwideop_(Inn) = + | MUL_WIDE sx hint(show MUL_WIDE#_#%) -- if $sizenn(Inn) = 64 syntax testop_(numtype) syntax testop_(Inn) = EQZ @@ -356,6 +364,8 @@ syntax instr/num hint(desc "numeric instruction") = ... | TESTOP numtype testop_(numtype) hint(show %.##%) | RELOP numtype relop_(numtype) hint(show %.##%) | CVTOP numtype_1 numtype_2 cvtop__(numtype_2, numtype_1) hint(show %1.##%3#_#%2) + | WIDEOP numtype wideop_(numtype) hint(show %.##%) + | EXTWIDEOP numtype extwideop_(numtype) hint(show %.##%) | ... syntax instr/vec hint(desc "vector instruction") = ... diff --git a/specification/wasm-latest/2.3-validation.instructions.spectec b/specification/wasm-latest/2.3-validation.instructions.spectec index 62ec9c61db..7963e083f7 100644 --- a/specification/wasm-latest/2.3-validation.instructions.spectec +++ b/specification/wasm-latest/2.3-validation.instructions.spectec @@ -535,6 +535,12 @@ rule Instr_ok/relop: rule Instr_ok/cvtop: C |- CVTOP nt_1 nt_2 cvtop : nt_2 -> nt_1 +rule Instr_ok/wideop: + C |- WIDEOP nt wideop_nt : nt nt nt nt -> nt nt + +rule Instr_ok/extwideop: + C |- EXTWIDEOP nt extwideop_nt : nt nt -> nt nt + ;; Vector instructions diff --git a/specification/wasm-latest/3.1-numerics.scalar.spectec b/specification/wasm-latest/3.1-numerics.scalar.spectec index 7ac9dad593..719864cabc 100644 --- a/specification/wasm-latest/3.1-numerics.scalar.spectec +++ b/specification/wasm-latest/3.1-numerics.scalar.spectec @@ -440,3 +440,49 @@ def $cvtop__(Inn_1, Fnn_2, REINTERPRET, i_1) = $reinterpret__(Inn_1, Fnn_2, i_1) -- if $size(Inn_1) = $size(Fnn_2) ;; TODO(3, rossberg): make implicit def $cvtop__(Fnn_1, Inn_2, REINTERPRET, f_1) = $reinterpret__(Fnn_1, Inn_2, f_1) -- if $size(Fnn_1) = $size(Inn_2) ;; TODO(3, rossberg): make implicit + +;; wide-arithmetic helpers and implementation + +def $iconcat_(numtype, N, num_(numtype), num_(numtype)) : iN(N) +def $iconcat_(Inn, N, i_1, i_2) = + $ior_( + N, + $iextend_(N, $sizenn(Inn), U, i_1), + $ishl_(N, $iextend_(N, $sizenn(Inn), U, i_2), $sizenn(Inn)), + ) + +def $isplit_(numtype, N, iN(N)) : (num_(numtype), num_(numtype)) +def $isplit_(Inn, N, i_1) = ( + $wrap__(N, $sizenn(Inn), i_1), + $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn))), +) + +def $wideop_(numtype, N, wideop_(numtype), iN(N), iN(N)) : iN(N) +def $wideop_(Inn, N, ADD128, i_1, i_2) = $iadd_(N, i_1, i_2) +def $wideop_(Inn, N, SUB128, i_1, i_2) = $isub_(N, i_1, i_2) + +def $wideop__(numtype, wideop_(numtype), num_(numtype), num_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) +def $wideop__(Inn, wideop, i_1, i_2, i_3, i_4) = + $isplit_( + Inn, + 128, + $wideop_( + Inn, + 128, + wideop, + $iconcat_(Inn, 128, i_1, i_2), + $iconcat_(Inn, 128, i_3, i_4), + ) + ) + +def $extwideop__(numtype, extwideop_(numtype), num_(numtype), num_(numtype)) : (num_(numtype), num_(numtype)) +def $extwideop__(Inn, MUL_WIDE sx, i_1, i_2) = + $isplit_( + Inn, + 128, + $imul_( + 128, + $iextend_(128, $sizenn(Inn), sx, i_1), + $iextend_(128, $sizenn(Inn), sx, i_2), + ) + ) diff --git a/specification/wasm-latest/4.3-execution.instructions.spectec b/specification/wasm-latest/4.3-execution.instructions.spectec index 65e3de4aeb..95724925e6 100644 --- a/specification/wasm-latest/4.3-execution.instructions.spectec +++ b/specification/wasm-latest/4.3-execution.instructions.spectec @@ -988,6 +988,15 @@ rule Step_pure/cvtop-trap: -- if $cvtop__(nt_1, nt_2, cvtop, c_1) = eps +rule Step_pure/wideop: + (CONST nt c_1) (CONST nt c_2) (CONST nt c_3) (CONST nt c_4) (WIDEOP nt wideop_nt) ~> (CONST nt c_5) (CONST nt c_6) + -- if (c_5, c_6) <- $wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4) + +rule Step_pure/extwideop: + (CONST nt c_1) (CONST nt c_2) (EXTWIDEOP nt extwideop_nt) ~> (CONST nt c_5) (CONST nt c_6) + -- if (c_5, c_6) <- $extwideop__(nt, extwideop_nt, c_1, c_2) + + ;; Vector instructions rule Step_pure/vvunop: diff --git a/specification/wasm-latest/5.3-binary.instructions.spectec b/specification/wasm-latest/5.3-binary.instructions.spectec index a08d138777..37b5c63080 100644 --- a/specification/wasm-latest/5.3-binary.instructions.spectec +++ b/specification/wasm-latest/5.3-binary.instructions.spectec @@ -386,6 +386,13 @@ grammar Binstr/num-cvt-sat : instr = ... | 0xFC 7:Bu32 => CVTOP I64 F64 TRUNC_SAT U | ... +grammar Binstr/num-wide : instr = ... + | 0xFC 13:Bu32 => WIDEOP I64 ADD128 + | 0xFC 14:Bu32 => WIDEOP I64 SUB128 + | 0xFC 15:Bu32 => EXTWIDEOP I64 MUL_WIDE S + | 0xFC 16:Bu32 => EXTWIDEOP I64 MUL_WIDE U + | ... + ;; Vector instructions diff --git a/specification/wasm-latest/6.3-text.instructions.spectec b/specification/wasm-latest/6.3-text.instructions.spectec index 645eb8325f..7869e0a816 100644 --- a/specification/wasm-latest/6.3-text.instructions.spectec +++ b/specification/wasm-latest/6.3-text.instructions.spectec @@ -551,6 +551,13 @@ grammar Tplaininstr_(I)/num-cvt-reinterpret : instr = ... | "f64.reinterpret_i64" => CVTOP F64 I64 REINTERPRET | ... +grammar Tplaininstr_(I)/num-wide : instr = ... + | "i64.add128" => WIDEOP I64 ADD128 + | "i64.sub128" => WIDEOP I64 SUB128 + | "i64.mul_wide_s" => EXTWIDEOP I64 MUL_WIDE S + | "i64.mul_wide_u" => EXTWIDEOP I64 MUL_WIDE U + | ... + ;; Vector instructions diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index a2a33d1b2b..64600b48dc 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -18,9 +18,6 @@ spectec 0.5 generator ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax M = nat - ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax K = nat @@ -87,7 +84,7 @@ def $concatn_(syntax X, X**, nat : nat) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 - def $concatn_{syntax X, `w*` : X*, n : n, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -178,22 +175,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax uN{N : N}(N) = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax sN{N : N}(N) = - | `%`{i : int}(i : int) + | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -215,10 +212,16 @@ syntax u32 = uN(32) syntax u64 = uN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u128 = uN(128) +syntax s33 = sN(33) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax s33 = sN(33) +syntax i32 = iN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $signif(N : N) : nat @@ -249,18 +252,18 @@ syntax exp = int ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = - | NORM{m : m, exp : exp}(m : m, exp : exp) + | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - | SUBNORM{m : m, exp : exp}(m : m) + | SUBNORM(m : m,) {exp : exp} -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) | INF - | NAN{m : m}(m : m) + | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN{N : N}(N) = - | POS{fNmag : fNmag(N)}(fNmag : fNmag(N)) - | NEG{fNmag : fNmag(N)}(fNmag : fNmag(N)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -271,7 +274,7 @@ syntax f64 = fN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0)) + def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) @@ -296,12 +299,12 @@ syntax v128 = vN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = - | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -313,23 +316,23 @@ def $cont(byte : byte) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 + -- if (`%`_byte(ch!`%`_char.0,) = b) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) @@ -337,7 +340,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -381,22 +384,22 @@ syntax fieldidx = idx ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax externidx = - | FUNC{funcidx : funcidx}(funcidx : funcidx) - | GLOBAL{globalidx : globalidx}(globalidx : globalidx) - | TABLE{tableidx : tableidx}(tableidx : tableidx) - | MEM{memidx : memidx}(memidx : memidx) - | TAG{tagidx : tagidx}(tagidx : tagidx) + | FUNC(funcidx) + | GLOBAL(globalidx) + | TABLE(tableidx) + | MEM(memidx) + | TAG(tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:127.1-127.86 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -404,13 +407,13 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:128.1-128.88 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -418,13 +421,13 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.87 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } @@ -432,13 +435,13 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -446,13 +449,13 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -460,79 +463,85 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax free = { - TYPES{`typeidx*` : typeidx*} typeidx*, - FUNCS{`funcidx*` : funcidx*} funcidx*, - GLOBALS{`globalidx*` : globalidx*} globalidx*, - TABLES{`tableidx*` : tableidx*} tableidx*, - MEMS{`memidx*` : memidx*} memidx*, - ELEMS{`elemidx*` : elemidx*} elemidx*, - DATAS{`dataidx*` : dataidx*} dataidx*, - LOCALS{`localidx*` : localidx*} localidx*, - LABELS{`labelidx*` : labelidx*} labelidx* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -544,6 +553,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -602,9 +613,9 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - | REC{n : n}(n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -621,9 +632,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -632,18 +643,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) | BOT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = - | BOT | I32 | I64 | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -652,35 +663,35 @@ syntax resulttype = list(syntax valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = - | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + | `%%`(`mut?` : mut?, storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = - | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) - | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = - | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = - | REC{list : list(syntax subtype)}(list : list(syntax subtype)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(rectype : rectype, n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) + | _IDX(typeidx) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -799,22 +810,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) + | `[%..%]`(u64 : u64, `u64?` : u64?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax globaltype = - | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(addrtype : addrtype, limits : limits) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tabletype = - | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -825,15 +836,15 @@ syntax elemtype = reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax externtype = - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype}(globaltype : globaltype) - | MEM{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype}(tabletype : tabletype) - | FUNC{typeuse : typeuse}(typeuse : typeuse) + | TAG(tagtype) + | GLOBAL(globaltype) + | MEM(memtype) + | TABLE(tabletype) + | FUNC(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -1107,7 +1118,7 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise @@ -1208,11 +1219,11 @@ def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype @@ -1222,7 +1233,7 @@ def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1267,7 +1278,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -1277,47 +1288,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : n, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec: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-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1494,17 +1499,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -1553,11 +1558,11 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsize((Jnn : Jnn <: lanetype))) + syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -1575,7 +1580,7 @@ syntax lit_(storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1590,7 +1595,7 @@ syntax unop_(numtype : numtype) | CLZ | CTZ | POPCNT - | EXTEND{sz : sz}(sz : sz) + | EXTEND(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) @@ -1612,13 +1617,13 @@ syntax binop_(numtype : numtype) | ADD | SUB | MUL - | DIV{sx : sx}(sx : sx) - | REM{sx : sx}(sx : sx) + | DIV(sx) + | REM(sx) | AND | OR | XOR | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) | ROTL | ROTR @@ -1643,7 +1648,7 @@ syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE{sx : sx}(sx : sx) + | MUL_WIDE(sx) -- if ($sizenn((Inn : Inn <: numtype)) = 64) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1656,10 +1661,10 @@ syntax relop_(numtype : numtype) syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) + | LT(sx) + | GT(sx) + | LE(sx) + | GE(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1676,7 +1681,7 @@ syntax relop_(numtype : numtype) syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | EXTEND{sx : sx}(sx : sx) + | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) | WRAP -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) @@ -1684,15 +1689,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx) + | TRUNC_SAT(sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -1707,37 +1712,40 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax shape = - | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax M = dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1771,7 +1779,7 @@ syntax vvtestop = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG | POPCNT @@ -1779,7 +1787,7 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG | SQRT @@ -1792,29 +1800,29 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB | MUL @@ -1830,38 +1838,38 @@ syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE | LT @@ -1871,93 +1879,93 @@ syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = +syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTADD_PAIRWISE{sx : sx}(sx : sx) +syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTMUL{half : half, sx : sx}(half : half, sx : sx) +syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | `RELAXED_DOT_ADDS` +syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | EXTEND{half : half, sx : sx}(half : half, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | DEMOTE{zero : zero}(zero : zero) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | PROMOTELOW -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - ALIGN{u32 : u32} u32, - OFFSET{u32 : u32} u32 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) - -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | SPLAT{sz : sz}(sz : sz) - | ZERO{sz : sz}(sz : sz) + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | SPLAT(sz) + | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) - | _IDX{funcidx : funcidx}(funcidx : funcidx) + | _RESULT(valtype?) + | _IDX(typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -1965,38 +1973,15 @@ syntax addr = nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) -} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax catch = - | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) - | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx) + | CATCH_ALL_REF(labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -2004,6 +1989,9 @@ syntax dataaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -2018,177 +2006,199 @@ syntax tagaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax externaddr = - | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) - | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) - | MEM{memaddr : memaddr}(memaddr : memaddr) - | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) - | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + | TAG(tagaddr) + | GLOBAL(globaladdr) + | MEM(memaddr) + | TABLE(tableaddr) + | FUNC(funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR externaddr } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax moduleinst = { - TYPES{`deftype*` : deftype*} deftype*, - TAGS{`tagaddr*` : tagaddr*} tagaddr*, - GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, - MEMS{`memaddr*` : memaddr*} memaddr*, - TABLES{`tableaddr*` : tableaddr*} tableaddr*, - FUNCS{`funcaddr*` : funcaddr*} funcaddr*, - DATAS{`dataaddr*` : dataaddr*} dataaddr*, - ELEMS{`elemaddr*` : elemaddr*} elemaddr*, - EXPORTS{`exportinst*` : exportinst*} exportinst* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE | DROP - | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) - | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) - | BR{labelidx : labelidx}(labelidx : labelidx) - | BR_IF{labelidx : labelidx}(labelidx : labelidx) - | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) - | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | CALL{funcidx : funcidx}(funcidx : funcidx) - | CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | SELECT(valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx) + | BR_IF(labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx) + | BR_ON_NON_NULL(labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx) + | CALL_REF(typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) | RETURN - | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) - | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | THROW{tagidx : tagidx}(tagidx : tagidx) + | RETURN_CALL(funcidx) + | RETURN_CALL_REF(typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx) | THROW_REF - | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) - | LOCAL.GET{localidx : localidx}(localidx : localidx) - | LOCAL.SET{localidx : localidx}(localidx : localidx) - | LOCAL.TEE{localidx : localidx}(localidx : localidx) - | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) - | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) - | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) - | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) - | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) - | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) - | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | LOAD{numtype : numtype, `loadop_?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_(numtype)?, memidx : memidx, memarg : memarg) - | STORE{numtype : numtype, `storeop_?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_(numtype)?, memidx : memidx, memarg : memarg) - | VLOAD{vectype : vectype, `vloadop_?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_(vectype)?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | MEMORY.SIZE{memidx : memidx}(memidx : memidx) - | MEMORY.GROW{memidx : memidx}(memidx : memidx) - | MEMORY.FILL{memidx : memidx}(memidx : memidx) - | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) - | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.IS_NULL - | REF.AS_NON_NULL - | REF.EQ - | REF.TEST{reftype : reftype}(reftype : reftype) - | REF.CAST{reftype : reftype}(reftype : reftype) - | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) - | REF.I31 - | I31.GET{sx : sx}(sx : sx) - | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) - | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) - | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.LEN - | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) - | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | EXTERN.CONVERT_ANY - | ANY.CONVERT_EXTERN - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | UNOP{numtype : numtype, unop_ : unop_(numtype)}(numtype : numtype, unop_ : unop_(numtype)) - | BINOP{numtype : numtype, binop_ : binop_(numtype)}(numtype : numtype, binop_ : binop_(numtype)) - | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) - | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) - | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) - | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) - | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) - | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) - | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) - | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) - | VUNOP{shape : shape, vunop_ : vunop_(shape)}(shape : shape, vunop_ : vunop_(shape)) - | VBINOP{shape : shape, vbinop_ : vbinop_(shape)}(shape : shape, vbinop_ : vbinop_(shape)) - | VTERNOP{shape : shape, vternop_ : vternop_(shape)}(shape : shape, vternop_ : vternop_(shape)) - | VTESTOP{shape : shape, vtestop_ : vtestop_(shape)}(shape : shape, vtestop_ : vtestop_(shape)) - | VRELOP{shape : shape, vrelop_ : vrelop_(shape)}(shape : shape, vrelop_ : vrelop_(shape)) - | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_(ishape)}(ishape : ishape, vshiftop_ : vshiftop_(ishape)) - | VBITMASK{ishape : ishape}(ishape : ishape) - | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_(bshape)}(bshape : bshape, vswizzlop_ : vswizzlop_(bshape)) - | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) - | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)) - | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)) - | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)) - | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx) + | `LOCAL.SET`(localidx) + | `LOCAL.TEE`(localidx) + | `GLOBAL.GET`(globalidx) + | `GLOBAL.SET`(globalidx) + | `TABLE.GET`(tableidx) + | `TABLE.SET`(tableidx) + | `TABLE.SIZE`(tableidx) + | `TABLE.GROW`(tableidx) + | `TABLE.FILL`(tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx) + | `MEMORY.GROW`(memidx) + | `MEMORY.FILL`(memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx) + | `REF.NULL`(heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype) + | `REF.CAST`(reftype) + | `REF.FUNC`(funcidx) + | `REF.I31` + | `I31.GET`(sx) + | `STRUCT.NEW`(typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|,) = $dim(bshape!`%`_bshape.0)) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) - | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -2198,14 +2208,14 @@ syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_((numtype : numtype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_((vectype : vectype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -2217,232 +2227,249 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{funcidx : funcidx}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 - def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:463.1-463.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:469.1-469.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:470.1-470.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:471.1-471.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:474.1-475.55 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:478.1-478.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:480.1-480.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:481.1-481.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:482.1-482.56 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:483.1-483.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:484.1-484.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:485.1-485.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:487.1-487.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:488.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:491.1-492.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:499.1-500.47 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:501.1-501.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:503.1-503.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:505.1-505.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 - def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 - def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 - def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 - def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 - def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 - def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 - def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 - def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 - def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 - def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 - def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 - def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 - def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 - def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 - def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 - def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 - def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 - def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 - def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 - def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 - def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 - def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 - def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.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*`})) } @@ -2454,66 +2481,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax datamode = - | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elem = - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : name, name : name, externtype : externtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax export = - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + | EXPORT(name : name, externidx : externidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax module = - | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -2555,7 +2582,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -2567,9 +2594,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -2594,7 +2621,7 @@ def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* @@ -2613,49 +2640,49 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + | `%%`(init : init, valtype : valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax context = { - TYPES{`deftype*` : deftype*} deftype*, - RECS{`subtype*` : subtype*} subtype*, - TAGS{`tagtype*` : tagtype*} tagtype*, - GLOBALS{`globaltype*` : globaltype*} globaltype*, - MEMS{`memtype*` : memtype*} memtype*, - TABLES{`tabletype*` : tabletype*} tabletype*, - FUNCS{`deftype*` : deftype*} deftype*, - DATAS{`datatype*` : datatype*} datatype*, - ELEMS{`elemtype*` : elemtype*} elemtype*, - LOCALS{`localtype*` : localtype*} localtype*, - LABELS{`resulttype*` : resulttype*} resulttype*, - RETURN{`resulttype?` : resulttype?} resulttype?, - REFS{`funcidx*` : funcidx*} funcidx* + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -2703,12 +2730,8 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) +syntax oktypenat = + | OK(nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -2731,9 +2754,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) - -- if ($expanddt(deftype) = comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -2742,22 +2765,21 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) `%|-%<:%`(C, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool +def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true + def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx : typeidx, x : idx, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : n, x : idx, i : nat}(REC_typeuse(j), x, i) = (j < i) + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + -- otherwise ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) + def $unrollht_{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -2773,181 +2795,158 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- if (|x*{x <- `x*`}| <= 1) - -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 - rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 - rule _rec2{C : context, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/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) - -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- (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-3.0/2.1-validation.types.spectec:91.1-91.126 -relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 - rule empty{C : context, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:92.1-92.102 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 - rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) - -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- 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-3.0/2.1-validation.types.spectec:95.1-95.108 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.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*`})) + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-3.0/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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) @@ -2985,7 +2984,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: @@ -2995,7 +2994,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: @@ -3012,108 +3011,134 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 - rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.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))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) + + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.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*`})) + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -3128,21 +3153,52 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/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)) + -- 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'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) +} + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) @@ -3156,14 +3212,14 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -3192,25 +3248,30 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) - -- if (m_1 <= m_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -3273,69 +3334,77 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) +relation Defaultable: `|-%DEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%DEFAULTABLE`(t) + `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -3344,82 +3413,82 @@ rec { relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_labelidx.0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)])) + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -3427,8 +3496,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -3436,552 +3505,557 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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-3.0/2.3-validation.instructions.spectec:202.1-204.31 - rule ref.null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 - rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))],))) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 - rule ref.i31{C : context}: - `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 - rule ref.is_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 - rule ref.as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 - rule ref.eq{C : context}: - `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 - rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 - rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 - rule i31.get{C : context, sx : sx}: - `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.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)],))) + -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(MUT_mut), zt)) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) + -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 - rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: - `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 - rule array.len{C : context}: - `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 - rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 - rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 - rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 - rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 - rule local.get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 - rule local.set{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 - rule local.tee{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 - rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: - `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 - rule global.set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 - rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 - rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 - rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 - rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 - rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 - rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 - rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 - rule elem.drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 - rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.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)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 - rule data.drop{C : context, x : idx}: - `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 - rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 - rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 - rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:627.1-631.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*`}))) + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%NONDEFAULTABLE`(t) + `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -3995,48 +4069,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: - `%|-%CONST`(C, REF.NULL_instr(ht)) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.func{C : context, x : idx}: - `%|-%CONST`(C, REF.FUNC_instr(x)) + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new_default{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_default{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_fixed{C : context, x : idx, n : n}: - `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule extern.convert_any{C : context}: - `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, GLOBAL.GET_instr(x)) + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -4057,7 +4131,7 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4067,7 +4141,7 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) - -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) @@ -4106,21 +4180,23 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- Defaultable: `|-%DEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Defaultable: `|-%DEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_idx.0]) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], 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*`},)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) @@ -4172,7 +4248,7 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -4205,7 +4281,7 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(dt : deftype <: typeuse)) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4218,51 +4294,51 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) - -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) - -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec syntax nonfuncs = - | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + `|-%:%`(MODULE_module(`%`_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*`} -- (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*`} @@ -4273,9 +4349,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) - -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (C = C' +++ {TYPES [], 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 (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*`})) @@ -4284,12 +4360,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -4416,7 +4492,7 @@ def $sx(storagetype : storagetype) : sx? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) @@ -4460,7 +4536,7 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) @@ -4481,51 +4557,51 @@ def $ictz_(N : N, iN : iN(N)) : iN(N) def $ipopcnt_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) +def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))) + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))) + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4561,16 +4637,16 @@ def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) @@ -4620,50 +4696,50 @@ def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* @@ -4744,31 +4820,31 @@ def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wrap__(M : M, N : N, iN : iN(M)) : iN(N) +def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $demote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $promote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) +def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) @@ -4810,7 +4886,7 @@ def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : nu ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, S_sx, i)] + def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4845,9 +4921,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4925,12 +5001,12 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) @@ -4947,7 +5023,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -4958,32 +5034,32 @@ def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?(zero) + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?() + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?(half) + def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?(LOW_half) + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -4998,7 +5074,7 @@ def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -5007,150 +5083,136 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) + def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) + def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) + def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) + def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivtestop_(shape : shape, def $f_(N : N, iN : iN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivtestop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvtestop_(shape : shape, def $f_(N : N, fN : fN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvtestop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -5177,204 +5239,199 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vtestop_(shape : shape, vtestop_ : vtestop_(shape), vec_ : vec_(V128_Vnn)) : u32 + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vtestop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ALL_TRUE_vtestop_, v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) + def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) + def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* @@ -5391,9 +5448,9 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -5406,165 +5463,154 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(S_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) + -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), RELAXED_DOTS_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax ref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | VCONST(vectype : vectype, vec_(vectype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | _VALS(val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = - | `...` + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | `...` + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS val* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax store = { - TAGS{`taginst*` : taginst*} taginst*, - GLOBALS{`globalinst*` : globalinst*} globalinst*, - MEMS{`meminst*` : meminst*} meminst*, - TABLES{`tableinst*` : tableinst*} tableinst*, - FUNCS{`funcinst*` : funcinst*} funcinst*, - DATAS{`datainst*` : datainst*} datainst*, - ELEMS{`eleminst*` : eleminst*} eleminst*, - STRUCTS{`structinst*` : structinst*} structinst*, - ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, - EXNS{`exninst*` : exninst*} exninst* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(store : store, frame : frame) + | `%;%`(store : store, frame : frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -5588,13 +5634,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5602,13 +5648,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5616,13 +5662,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5630,13 +5676,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5644,13 +5690,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5725,115 +5771,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_idx.0] = ?(v)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], f) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : idx, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], f) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : idx, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], f) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : idx, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], f) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : idx, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], f) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : idx, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], f) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst @@ -5843,15 +5899,34 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostcallresult = + | RES(store : store, result : result) + | BOT + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $lift_result(result : result) : instr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result(TRAP_result) = [TRAP_instr] ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -5870,49 +5945,50 @@ rec { ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 - rule null{s : store, ht : heaptype, ht' : heaptype}: - `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/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(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 - rule extern{s : store, addrref : addrref}: - `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -5932,72 +6008,86 @@ relation Val_ok: `%|-%:%`(store, val, valtype) `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(funcinst.TYPE_funcinst : deftype <: typeuse)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -6044,7 +6134,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -6072,9 +6162,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -6082,9 +6172,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -6093,11 +6183,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -6128,81 +6218,87 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.i31{i : num_(I32_numtype)}: - `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, i))]) + rule `ref.i31`{i : num_(I32_numtype)}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: - `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -6272,7 +6368,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- if (c = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) + -- if (c = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: @@ -6305,9 +6401,10 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_(V128_Vnn), sh : shape, vtestop : vtestop_(sh), i : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- if (i = $vtestop_(sh, vtestop, c_1)) + rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) + -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: @@ -6336,23 +6433,23 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: - `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: @@ -6382,28 +6479,27 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -6411,10 +6507,9 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -6423,24 +6518,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- if ($funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -6452,486 +6535,484 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) - -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(M)*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})) + -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)])) + -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1))]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_u32.0]) : val <: instr)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-null`{z : state, ht : heaptype, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), ht_2 : heaptype, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_ELEM_instr(x, y)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_DATA_instr(x, y)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6962,138 +7043,171 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:184.1-190.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- if ($funcinst(`%;%`_state(s, f))[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:320.1-321.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|))])) + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) -- if (ti = $growtable($table(z, x), n, ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.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!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.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!`%`_u32.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.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!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n,),)), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-532.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!`%`_u32.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n,),)), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.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!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.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!`%`_u32.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.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!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_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-3.0/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:550.1-555.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!`%`_u32.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) + -- 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-3.0/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:564.1-567.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) -- if (mi = $growmem($mem(z, x), n)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 - rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:778.1-779.64 - rule `array.set-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:795.1-797.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -7177,7 +7291,7 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7289,8 +7403,8 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) @@ -7304,7 +7418,7 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) @@ -7318,137 +7432,962 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (module = 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*`},))) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- if ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D,), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(33)} i:BsN(33) => i +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt,) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I,) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context,) + ;; ../../../../specification/wasm-3.0/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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), 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([(rt : reftype <: valtype)],)))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store, t : valtype}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) + -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/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*`},))) + -- 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*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- if (C'.RETURN_context = ?(`%`_resulttype(t^n{t <- `t*`},))) + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) + -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + rule seq{s : store, 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*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/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*`},))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + rule `ref.struct`{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-3.0/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store,) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s,) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- 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?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s,) + -- Frame_ok: `%|-%:%`(s, f, C) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A) + | _DOTS + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A) + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat,) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion,) + -- NotationTypingPremise: `%`(premise_1,) + -- NotationTypingPremise: `%`(premise_2,) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*,) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)],) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) + -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat,) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN(33)} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf32 : f32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(32)} p:BfN(32) => p + prod{`` : fN(32)} ``:BfN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf64 : f64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(64)} p:BfN(64) => p + prod{`` : fN(64)} ``:BfN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -7496,6 +8435,11 @@ grammar Blocalidx : localidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blabelidx : labelidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -7586,7 +8530,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmut : mut? @@ -7612,16 +8556,16 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`},):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`},):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bsubtype : subtype @@ -7635,20 +8579,20 @@ grammar Bsubtype : subtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Brectype : rectype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btagtype : tagtype @@ -7658,7 +8602,7 @@ grammar Btagtype : tagtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -7668,7 +8612,7 @@ grammar Bmemtype : memtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btabletype : tabletype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -7683,6 +8627,17 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -7690,7 +8645,7 @@ grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_funcidx((i!`%`_s33.0 : int <:> nat))) + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -7704,41 +8659,24 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u32(m):Bu32}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u32(m)}) + prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u32(m):Bu32}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u32(m)}) + prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) + prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -7750,996 +8688,1000 @@ grammar Binstr : instr prod 0x1B => SELECT_instr(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:24.5-24.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:25.5-25.56 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:26.5-26.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:27.5-28.55 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.22 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-35.32 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:36.5-36.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:37.5-37.19 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:38.5-38.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:39.5-39.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-55.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:56.5-56.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-57.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:61.5-61.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:62.5-62.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:69.5-69.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:70.5-70.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:74.5-74.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:75.5-75.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:76.5-76.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:93.5-93.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:94.5-94.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:95.5-95.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:96.5-96.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:97.5-97.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.5-98.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:99.5-99.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:100.5-100.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:101.5-101.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:102.5-102.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:103.5-103.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:104.5-104.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:134.5-134.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:135.5-135.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:136.5-136.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:137.5-137.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:138.5-138.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:151.5-151.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:158.5-158.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:159.5-159.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:160.5-160.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-173.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-175.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:180.5-180.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr + prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:186.5-186.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) + prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, `%`_num_(n)) + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, `%`_num_(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:196.5-196.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:200.5-200.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:213.5-213.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:217.5-217.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:230.5-230.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:239.5-239.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:248.5-248.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:254.5-254.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:272.5-272.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:278.5-278.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:283.5-283.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:289.5-289.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:307.5-307.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:317.5-317.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:327.5-327.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:337.5-337.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:347.5-347.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.33 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.34 - prod 0xBB => CVTOP_instr(F32_numtype, F64_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:376.5-376.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 - prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 - prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:405.5-405.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:407.5-407.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) + prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) + prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -8750,7 +9692,7 @@ grammar Bexpr : expr ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -8758,12 +9700,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + prod {{Bname} {Bbyte*{}}} => [] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustomsec : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -8793,7 +9735,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) @@ -8838,9 +9780,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -8849,39 +9788,36 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belem : elem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -8892,7 +9828,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -8903,11 +9839,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -8917,10 +9853,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* + prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacntsec : u32? @@ -8940,17 +9873,17 @@ grammar Btagsec : tag* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmagic : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} @@ -8958,9 +9891,9 @@ grammar Bmodule : module ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -8985,57 +9918,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{`` : nat} ``:0x21 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{`` : nat} ``:0x23 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{`` : nat} ``:0x24 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{`` : nat} ``:0x25 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{`` : nat} ``:0x26 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{`` : nat} ``:0x27 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{`` : nat} ``:0x2A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{`` : nat} ``:0x2B => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{`` : nat} ``:0x2D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{`` : nat} ``:0x2E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{`` : nat} ``:0x2F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{`` : nat} ``:0x3A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{`` : nat} ``:0x3C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{`` : nat} ``:0x3D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{`` : nat} ``:0x3E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{`` : nat} ``:0x3F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{`` : nat} ``:0x40 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{`` : nat} ``:0x5C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{`` : nat} ``:0x5E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{`` : nat} ``:0x5F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{`` : nat} ``:0x60 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{`` : nat} ``:0x7C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{`` : nat} ``:0x7E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -9104,21 +10037,21 @@ grammar Thexnum : nat grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod "\\t" => `%`_char(9,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod "\\n" => `%`_char(10,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod "\\r" => `%`_char(13,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod "\\\"" => `%`_char(34,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod "\\'" => `%`_char(39,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod "\\\\" => `%`_char(92,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9126,7 +10059,7 @@ grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -9137,15 +10070,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -9198,13 +10131,13 @@ grammar Tblockcomment : () grammar Tblockchar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -9285,24 +10218,24 @@ grammar Tnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) + prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -9340,9 +10273,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9364,9 +10294,9 @@ grammar TfNmag(N : N) : fNmag(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod "nan" => NAN_fNmag($canon_(N),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9411,11 +10341,6 @@ grammar Ti64 : u64 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti128 : u128 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(128)} ``:TiN(128) => `` - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tf32 : f32 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9432,61 +10357,12 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`subtype?*` : subtype?*} subtype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.57 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{x : idx} x:Tu32 => x ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9650,12 +10526,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(I : I) : valtype @@ -9665,11 +10541,11 @@ grammar Tresult_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfinal : final @@ -9684,12 +10560,12 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -9701,21 +10577,23 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I} {{"("} {"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] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I',) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype @@ -9742,15 +10620,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -9769,7 +10647,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -9782,26 +10660,33 @@ grammar Tcatch_(I : I) : catch ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u32(m)} + prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -9812,7 +10697,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "drop" => DROP_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} {{"select"} {t?{t <- `t?`}:Tresult_(I)?{}}} => SELECT_instr(?(lift(t?{t <- `t?`}))) + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9833,7 +10718,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9842,37 +10727,37 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9882,59 +10767,59 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9944,101 +10829,101 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr + prod "ref.is_null" => `REF.IS_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr + prod "ref.eq" => `REF.EQ`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + prod "i31.get_s" => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) + prod "i31.get_u" => `I31.GET`_instr(U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr + prod "array.len" => `ARRAY.LEN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10122,9 +11007,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10132,11 +11017,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10272,9 +11157,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10340,205 +11225,205 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10548,259 +11433,263 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -10819,32 +11708,19 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:31.1-41.24 -grammar Tfoldedinstr_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:28.5-28.59 - prod{in : instr, `in'*` : instr*} {{"("} {in:Tplaininstr_(I)} {in'*{in' <- `in'*`}:Tinstrs_(I)} {")"}} => in'*{in' <- `in'*`} ++ [in] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:32.5-33.17 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [BLOCK_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:34.5-35.16 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [LOOP_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:36.5-39.33 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `in_1*` : instr*, `in_2*` : instr*} {{"("} {"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"("} {"then"} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {")"} {{{"("} {"else"} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {")"}}?{}} {")"}} => in*{in <- `in*`} ++ [`IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:40.5-41.24 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*} {{"("} {"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:75.1-77.65 +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:61.5-63.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:64.5-66.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:67.5-69.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:70.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } @@ -10853,388 +11729,207 @@ grammar Texpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, st : subtype, n : n} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{}))) - -- if (((n = 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS [?(st)]})) \/ ((n =/= 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?()^n{}}))) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_memidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffsetexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*, x : idx, e : expr} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {x:Tmemuse_(I)} {e:Toffset_(I)} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_tableidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*, x : idx, e' : expr} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {x:Ttableuse_(I)} {e':Toffset_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemorydots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemory_(I : I) : () +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamemory_(I : I) : () +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:226.1-226.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:238.1-238.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:239.1-239.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:240.1-240.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:227.1-227.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:242.1-242.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:243.1-243.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:244.1-244.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:228.1-228.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:246.1-246.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:247.1-247.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:248.1-248.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:229.1-229.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:250.1-250.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:251.1-251.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:252.1-252.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:230.1-230.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:254.1-254.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:255.1-255.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:256.1-256.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:231.1-231.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:232.1-232.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:233.1-233.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:234.1-234.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:235.1-235.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:236.1-236.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered([]) = true - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) @@ -11248,133 +11943,15 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -11386,14 +11963,14 @@ grammar Bsym : A ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsymsplit : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -11405,18 +11982,9 @@ grammar Tsym : A ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsymsplit : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tabbrev : () diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index 4a90975ffb..70861e9696 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -4,44 +4,18 @@ $ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wat addTwo 30 12 2>&1 spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/sample.wat ===== -42 -== Complete. +../../../_specification/wasm-3.0/*.spectec: No such file or directory +[2] $ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wasm addTwo 40 2 2>&1 spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/sample.wasm ===== -42 -== Complete. +../../../_specification/wasm-3.0/*.spectec: No such file or directory +[2] $ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wast 2>&1 spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/sample.wast ===== -- print_i32: 10 -- 32/32 (100.00%) - -== Complete. +../../../_specification/wasm-3.0/*.spectec: No such file or directory +[2] $ 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 \ @@ -49,1522 +23,14 @@ $ for v in 1 2 3; do ( \ Running test for Wasm 1.0... spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/spec-test-1/address.wast ===== -- 246/246 (100.00%) - -===== ../test-interpreter/spec-test-1/align.wast ===== -- 98/98 (100.00%) - -===== ../test-interpreter/spec-test-1/binary-leb128.wast ===== -- 50/50 (100.00%) - -===== ../test-interpreter/spec-test-1/binary.wast ===== -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-1/block.wast ===== -- 43/43 (100.00%) - -===== ../test-interpreter/spec-test-1/br.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-1/br_if.wast ===== -- 90/90 (100.00%) - -===== ../test-interpreter/spec-test-1/br_table.wast ===== -- 148/148 (100.00%) - -===== ../test-interpreter/spec-test-1/break-drop.wast ===== -- 5/5 (100.00%) - -===== ../test-interpreter/spec-test-1/call.wast ===== -- 63/63 (100.00%) - -===== ../test-interpreter/spec-test-1/call_indirect.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/comments.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-1/const.wast ===== -- 976/976 (100.00%) - -===== ../test-interpreter/spec-test-1/conversions.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/conversions.wast - -===== ../test-interpreter/spec-test-1/custom.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-1/data.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/data.wast - -===== ../test-interpreter/spec-test-1/elem.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/elem.wast - -===== ../test-interpreter/spec-test-1/endianness.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-1/exports.wast ===== -- 114/114 (100.00%) - -===== ../test-interpreter/spec-test-1/f32.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/f32.wast - -===== ../test-interpreter/spec-test-1/f32_bitwise.wast ===== -- 362/362 (100.00%) - -===== ../test-interpreter/spec-test-1/f32_cmp.wast ===== -- 2402/2402 (100.00%) - -===== ../test-interpreter/spec-test-1/f64.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/f64.wast - -===== ../test-interpreter/spec-test-1/f64_bitwise.wast ===== -- 362/362 (100.00%) - -===== ../test-interpreter/spec-test-1/f64_cmp.wast ===== -- 2402/2402 (100.00%) - -===== ../test-interpreter/spec-test-1/fac.wast ===== -- 7/7 (100.00%) - -===== ../test-interpreter/spec-test-1/float_exprs.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/float_exprs.wast - -===== ../test-interpreter/spec-test-1/float_literals.wast ===== -- 87/87 (100.00%) - -===== ../test-interpreter/spec-test-1/float_memory.wast ===== -- 96/96 (100.00%) - -===== ../test-interpreter/spec-test-1/float_misc.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/float_misc.wast - -===== ../test-interpreter/spec-test-1/forward.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-1/func.wast ===== -- 79/79 (100.00%) - -===== ../test-interpreter/spec-test-1/func_ptrs.wast ===== -- print_i32: 83 -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-1/globals.wast ===== -- 56/56 (100.00%) - -===== ../test-interpreter/spec-test-1/i32.wast ===== -- 361/361 (100.00%) - -===== ../test-interpreter/spec-test-1/i64.wast ===== -- 361/361 (100.00%) - -===== ../test-interpreter/spec-test-1/if.wast ===== -- 90/90 (100.00%) - -===== ../test-interpreter/spec-test-1/imports.wast ===== -- Failed to parse ../test-interpreter/spec-test-1/imports.wast - -===== ../test-interpreter/spec-test-1/inline-module.wast ===== -- 1/1 (100.00%) - -===== ../test-interpreter/spec-test-1/int_exprs.wast ===== -- 127/127 (100.00%) - -===== ../test-interpreter/spec-test-1/int_literals.wast ===== -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-1/labels.wast ===== -- 27/27 (100.00%) - -===== ../test-interpreter/spec-test-1/left-to-right.wast ===== -- 97/97 (100.00%) - -===== ../test-interpreter/spec-test-1/linking.wast ===== -- 129/129 (100.00%) - -===== ../test-interpreter/spec-test-1/load.wast ===== -- 39/39 (100.00%) - -===== ../test-interpreter/spec-test-1/local_get.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-1/local_set.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-1/local_tee.wast ===== -- 57/57 (100.00%) - -===== ../test-interpreter/spec-test-1/loop.wast ===== -- 68/68 (100.00%) - -===== ../test-interpreter/spec-test-1/memory.wast ===== -- 61/61 (100.00%) - -===== ../test-interpreter/spec-test-1/memory_grow.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/memory_redundancy.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-1/memory_size.wast ===== -- 44/44 (100.00%) - -===== ../test-interpreter/spec-test-1/memory_trap.wast ===== -- 175/175 (100.00%) - -===== ../test-interpreter/spec-test-1/names.wast ===== -- print_i32: 42 -- print_i32: 123 -- 487/487 (100.00%) - -===== ../test-interpreter/spec-test-1/nop.wast ===== -- 85/85 (100.00%) - -===== ../test-interpreter/spec-test-1/return.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-1/select.wast ===== -- 96/96 (100.00%) - -===== ../test-interpreter/spec-test-1/skip-stack-guard-page.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-1/stack.wast ===== -- 7/7 (100.00%) - -===== ../test-interpreter/spec-test-1/start.wast ===== -- print_i32: 1 -- print_i32: 2 -- print: () -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-1/store.wast ===== -- 11/11 (100.00%) - -===== ../test-interpreter/spec-test-1/switch.wast ===== -- 28/28 (100.00%) - -===== ../test-interpreter/spec-test-1/token.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/traps.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-1/type.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-1/unreachable.wast ===== -- 63/63 (100.00%) - -===== ../test-interpreter/spec-test-1/unreached-invalid.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/unwind.wast ===== -- 51/51 (100.00%) - -===== ../test-interpreter/spec-test-1/utf8-custom-section-id.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/utf8-import-field.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/utf8-import-module.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-1/utf8-invalid-encoding.wast ===== -- 0/0 (100.00%) - -8 parsing fail -Total [10584/10584] (100.00%) - -== Complete. +../../../_specification/wasm-1.0/*.spectec: No such file or directory Running test for Wasm 2.0... spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/spec-test-2/address.wast ===== -- 263/263 (100.00%) - -===== ../test-interpreter/spec-test-2/align.wast ===== -- 98/98 (100.00%) - -===== ../test-interpreter/spec-test-2/binary-leb128.wast ===== -- 52/52 (100.00%) - -===== ../test-interpreter/spec-test-2/binary.wast ===== -- 76/76 (100.00%) - -===== ../test-interpreter/spec-test-2/block.wast ===== -- 54/54 (100.00%) - -===== ../test-interpreter/spec-test-2/br.wast ===== -- 78/78 (100.00%) - -===== ../test-interpreter/spec-test-2/br_if.wast ===== -- 90/90 (100.00%) - -===== ../test-interpreter/spec-test-2/br_table.wast ===== -- 151/151 (100.00%) - -===== ../test-interpreter/spec-test-2/bulk.wast ===== -- 130/130 (100.00%) - -===== ../test-interpreter/spec-test-2/call.wast ===== -- 72/72 (100.00%) - -===== ../test-interpreter/spec-test-2/call_indirect.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/comments.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-2/const.wast ===== -- 1104/1104 (100.00%) - -===== ../test-interpreter/spec-test-2/conversions.wast ===== -- 595/595 (100.00%) - -===== ../test-interpreter/spec-test-2/custom.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-2/data.wast ===== -- 78/78 (100.00%) - -===== ../test-interpreter/spec-test-2/elem.wast ===== -- 107/107 (100.00%) - -===== ../test-interpreter/spec-test-2/endianness.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-2/exports.wast ===== -- 121/121 (100.00%) - -===== ../test-interpreter/spec-test-2/f32.wast ===== -- 2502/2502 (100.00%) - -===== ../test-interpreter/spec-test-2/f32_bitwise.wast ===== -- 362/362 (100.00%) - -===== ../test-interpreter/spec-test-2/f32_cmp.wast ===== -- 2402/2402 (100.00%) - -===== ../test-interpreter/spec-test-2/f64.wast ===== -- 2502/2502 (100.00%) - -===== ../test-interpreter/spec-test-2/f64_bitwise.wast ===== -- 362/362 (100.00%) - -===== ../test-interpreter/spec-test-2/f64_cmp.wast ===== -- 2402/2402 (100.00%) - -===== ../test-interpreter/spec-test-2/fac.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-2/float_exprs.wast ===== -- 996/996 (100.00%) - -===== ../test-interpreter/spec-test-2/float_literals.wast ===== -- 87/87 (100.00%) - -===== ../test-interpreter/spec-test-2/float_memory.wast ===== -- 96/96 (100.00%) - -===== ../test-interpreter/spec-test-2/float_misc.wast ===== -- 442/442 (100.00%) - -===== ../test-interpreter/spec-test-2/forward.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-2/func.wast ===== -- 104/104 (100.00%) - -===== ../test-interpreter/spec-test-2/func_ptrs.wast ===== -- print_i32: 83 -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-2/global.wast ===== -- 68/68 (100.00%) - -===== ../test-interpreter/spec-test-2/i32.wast ===== -- 376/376 (100.00%) - -===== ../test-interpreter/spec-test-2/i64.wast ===== -- 386/386 (100.00%) - -===== ../test-interpreter/spec-test-2/if.wast ===== -- 125/125 (100.00%) - -===== ../test-interpreter/spec-test-2/imports.wast ===== -- 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 -- 213/213 (100.00%) - -===== ../test-interpreter/spec-test-2/inline-module.wast ===== -- 1/1 (100.00%) - -===== ../test-interpreter/spec-test-2/int_exprs.wast ===== -- 127/127 (100.00%) - -===== ../test-interpreter/spec-test-2/int_literals.wast ===== -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-2/labels.wast ===== -- 27/27 (100.00%) - -===== ../test-interpreter/spec-test-2/left-to-right.wast ===== -- 97/97 (100.00%) - -===== ../test-interpreter/spec-test-2/linking.wast ===== -- 151/151 (100.00%) - -===== ../test-interpreter/spec-test-2/load.wast ===== -- 39/39 (100.00%) - -===== ../test-interpreter/spec-test-2/local_get.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-2/local_set.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-2/local_tee.wast ===== -- 57/57 (100.00%) - -===== ../test-interpreter/spec-test-2/loop.wast ===== -- 79/79 (100.00%) - -===== ../test-interpreter/spec-test-2/memory.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_copy.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_fill.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_grow.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_init.wast ===== -- 197/197 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_redundancy.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_size.wast ===== -- 44/44 (100.00%) - -===== ../test-interpreter/spec-test-2/memory_trap.wast ===== -- 184/184 (100.00%) - -===== ../test-interpreter/spec-test-2/names.wast ===== -- print_i32: 42 -- print_i32: 123 -- 490/490 (100.00%) - -===== ../test-interpreter/spec-test-2/nop.wast ===== -- 85/85 (100.00%) - -===== ../test-interpreter/spec-test-2/ref_func.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-2/ref_is_null.wast ===== -- 15/15 (100.00%) - -===== ../test-interpreter/spec-test-2/ref_null.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-2/return.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-2/select.wast ===== -- 122/122 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_address.wast ===== -- 48/48 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_align.wast ===== -- 100/100 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_bit_shift.wast ===== -- 215/215 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_bitwise.wast ===== -- 143/143 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_boolean.wast ===== -- 263/263 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_const.wast ===== -- 889/889 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_conversions.wast ===== -- 236/236 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f32x4.wast ===== -- 776/776 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f32x4_arith.wast ===== -- 1809/1809 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f32x4_cmp.wast ===== -- 2585/2585 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f32x4_pmin_pmax.wast ===== -- 3874/3874 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f32x4_rounding.wast ===== -- 178/178 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f64x2.wast ===== -- 797/797 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f64x2_arith.wast ===== -- 1812/1812 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f64x2_cmp.wast ===== -- 2663/2663 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f64x2_pmin_pmax.wast ===== -- 3874/3874 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_f64x2_rounding.wast ===== -- 178/178 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_arith.wast ===== -- 185/185 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_arith2.wast ===== -- 155/155 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_cmp.wast ===== -- 437/437 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_extadd_pairwise_i8x16.wast ===== -- 18/18 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_extmul_i8x16.wast ===== -- 106/106 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_q15mulr_sat_s.wast ===== -- 28/28 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i16x8_sat_arith.wast ===== -- 208/208 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_arith.wast ===== -- 185/185 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_arith2.wast ===== -- 125/125 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_cmp.wast ===== -- 437/437 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_dot_i16x8.wast ===== -- 28/28 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_extadd_pairwise_i16x8.wast ===== -- 18/18 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_extmul_i16x8.wast ===== -- 106/106 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_trunc_sat_f32x4.wast ===== -- 104/104 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i32x4_trunc_sat_f64x2.wast ===== -- 104/104 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i64x2_arith.wast ===== -- 191/191 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i64x2_arith2.wast ===== -- 25/25 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i64x2_cmp.wast ===== -- 104/104 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i64x2_extmul_i32x4.wast ===== -- 106/106 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i8x16_arith.wast ===== -- 125/125 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i8x16_arith2.wast ===== -- 188/188 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i8x16_cmp.wast ===== -- 417/417 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_i8x16_sat_arith.wast ===== -- 192/192 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_int_to_int_extend.wast ===== -- 230/230 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_lane.wast ===== -- 298/298 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_linking.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load.wast ===== -- 45/45 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load16_lane.wast ===== -- 34/34 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load32_lane.wast ===== -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load64_lane.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load8_lane.wast ===== -- 50/50 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load_extend.wast ===== -- 88/88 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load_splat.wast ===== -- 116/116 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_load_zero.wast ===== -- 31/31 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_splat.wast ===== -- 166/166 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_store.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_store16_lane.wast ===== -- 34/34 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_store32_lane.wast ===== -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_store64_lane.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-2/simd/simd_store8_lane.wast ===== -- 50/50 (100.00%) - -===== ../test-interpreter/spec-test-2/skip-stack-guard-page.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-2/stack.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-2/start.wast ===== -- print_i32: 1 -- print_i32: 2 -- print: () -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-2/store.wast ===== -- 11/11 (100.00%) - -===== ../test-interpreter/spec-test-2/switch.wast ===== -- 28/28 (100.00%) - -===== ../test-interpreter/spec-test-2/table-sub.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/table.wast ===== -- 18/18 (100.00%) - -===== ../test-interpreter/spec-test-2/table_copy.wast ===== -- 1779/1779 (100.00%) - -===== ../test-interpreter/spec-test-2/table_fill.wast ===== -- 37/37 (100.00%) - -===== ../test-interpreter/spec-test-2/table_get.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-2/table_grow.wast ===== -- 48/48 (100.00%) - -===== ../test-interpreter/spec-test-2/table_init.wast ===== -- 747/747 (100.00%) - -===== ../test-interpreter/spec-test-2/table_set.wast ===== -- 20/20 (100.00%) - -===== ../test-interpreter/spec-test-2/table_size.wast ===== -- 38/38 (100.00%) - -===== ../test-interpreter/spec-test-2/token.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/tokens.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-2/traps.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-2/type.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-2/unreachable.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-2/unreached-invalid.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/unreached-valid.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-2/unwind.wast ===== -- 51/51 (100.00%) - -===== ../test-interpreter/spec-test-2/utf8-custom-section-id.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/utf8-import-field.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/utf8-import-module.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-2/utf8-invalid-encoding.wast ===== -- 0/0 (100.00%) - -Total [46851/46851] (100.00%) - -== Complete. +../../../_specification/wasm-2.0/*.spectec: No such file or directory Running test for Wasm 3.0... spectec 0.5 generator == Parsing... -== Elaboration... -== IL Validation... -== Running pass sideconditions... -== IL Validation after pass sideconditions... -== Translating to AL... -== Initializing interpreter... -== Interpreting... -===== ../test-interpreter/spec-test-3/address.wast ===== -- 264/264 (100.00%) - -===== ../test-interpreter/spec-test-3/align.wast ===== -- 142/142 (100.00%) - -===== ../test-interpreter/spec-test-3/annotations.wast ===== -- 20/20 (100.00%) - -===== ../test-interpreter/spec-test-3/binary-leb128.wast ===== -- 66/66 (100.00%) - -===== ../test-interpreter/spec-test-3/binary.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-3/block.wast ===== -- 209/209 (100.00%) - -===== ../test-interpreter/spec-test-3/br.wast ===== -- 98/98 (100.00%) - -===== ../test-interpreter/spec-test-3/br_if.wast ===== -- 120/120 (100.00%) - -===== ../test-interpreter/spec-test-3/br_on_non_null.wast ===== -- 15/15 (100.00%) - -===== ../test-interpreter/spec-test-3/br_on_null.wast ===== -- 13/13 (100.00%) - -===== ../test-interpreter/spec-test-3/br_table.wast ===== -- 187/187 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/bulk.wast ===== -- 130/130 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/memory_copy.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/memory_fill.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/memory_init.wast ===== -- 264/264 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/table-sub.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/table_copy.wast ===== -- 1779/1779 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/table_fill.wast ===== -- 46/46 (100.00%) - -===== ../test-interpreter/spec-test-3/bulk-memory/table_init.wast ===== -- 814/814 (100.00%) - -===== ../test-interpreter/spec-test-3/call.wast ===== -- 90/90 (100.00%) - -===== ../test-interpreter/spec-test-3/call_indirect.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/call_ref.wast ===== -- 39/39 (100.00%) - -===== ../test-interpreter/spec-test-3/comments.wast ===== -- 13/13 (100.00%) - -===== ../test-interpreter/spec-test-3/const.wast ===== -- 1104/1104 (100.00%) - -===== ../test-interpreter/spec-test-3/conversions.wast ===== -- 620/620 (100.00%) - -===== ../test-interpreter/spec-test-3/custom.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-3/data.wast ===== -- 110/110 (100.00%) - -===== ../test-interpreter/spec-test-3/elem.wast ===== -- 236/236 (100.00%) - -===== ../test-interpreter/spec-test-3/endianness.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-3/exceptions/tag.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/exceptions/throw.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-3/exceptions/throw_ref.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-3/exceptions/try_table.wast ===== -- 64/64 (100.00%) - -===== ../test-interpreter/spec-test-3/exports.wast ===== -- 153/153 (100.00%) - -===== ../test-interpreter/spec-test-3/f32.wast ===== -- 2513/2513 (100.00%) - -===== ../test-interpreter/spec-test-3/f32_bitwise.wast ===== -- 365/365 (100.00%) - -===== ../test-interpreter/spec-test-3/f32_cmp.wast ===== -- 2408/2408 (100.00%) - -===== ../test-interpreter/spec-test-3/f64.wast ===== -- 2513/2513 (100.00%) - -===== ../test-interpreter/spec-test-3/f64_bitwise.wast ===== -- 365/365 (100.00%) - -===== ../test-interpreter/spec-test-3/f64_cmp.wast ===== -- 2408/2408 (100.00%) - -===== ../test-interpreter/spec-test-3/fac.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-3/float_exprs.wast ===== -- 1025/1025 (100.00%) - -===== ../test-interpreter/spec-test-3/float_literals.wast ===== -- 103/103 (100.00%) - -===== ../test-interpreter/spec-test-3/float_memory.wast ===== -- 96/96 (100.00%) - -===== ../test-interpreter/spec-test-3/float_misc.wast ===== -- 472/472 (100.00%) - -===== ../test-interpreter/spec-test-3/forward.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-3/func.wast ===== -- 156/156 (100.00%) - -===== ../test-interpreter/spec-test-3/func_ptrs.wast ===== -- print_i32: 83 -- 39/39 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array.wast ===== -- 61/61 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_copy.wast ===== -- 36/36 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_fill.wast ===== -- 18/18 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_init_data.wast ===== -- 48/48 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_init_elem.wast ===== -- 24/24 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_new_data.wast ===== -- 33/33 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/array_new_elem.wast ===== -- 26/26 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/binary-gc.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/br_on_cast.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/br_on_cast_fail.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/extern.wast ===== -- 19/19 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/i31.wast ===== -- 79/79 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/ref_cast.wast ===== -- 47/47 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/ref_eq.wast ===== -- 90/90 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/ref_test.wast ===== -- 73/73 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/struct.wast ===== -- 35/35 (100.00%) - -===== ../test-interpreter/spec-test-3/gc/type-subtyping.wast ===== -- 151/151 (100.00%) - -===== ../test-interpreter/spec-test-3/global.wast ===== -- 125/125 (100.00%) - -===== ../test-interpreter/spec-test-3/i32.wast ===== -- 459/459 (100.00%) - -===== ../test-interpreter/spec-test-3/i64.wast ===== -- 415/415 (100.00%) - -===== ../test-interpreter/spec-test-3/id.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/if.wast ===== -- 218/218 (100.00%) - -===== ../test-interpreter/spec-test-3/imports.wast ===== -- 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 -- 264/264 (100.00%) - -===== ../test-interpreter/spec-test-3/inline-module.wast ===== -- 1/1 (100.00%) - -===== ../test-interpreter/spec-test-3/instance.wast ===== -- 23/23 (100.00%) - -===== ../test-interpreter/spec-test-3/int_exprs.wast ===== -- 127/127 (100.00%) - -===== ../test-interpreter/spec-test-3/int_literals.wast ===== -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-3/labels.wast ===== -- 30/30 (100.00%) - -===== ../test-interpreter/spec-test-3/left-to-right.wast ===== -- 97/97 (100.00%) - -===== ../test-interpreter/spec-test-3/linking.wast ===== -- 182/182 (100.00%) - -===== ../test-interpreter/spec-test-3/load.wast ===== -- 85/85 (100.00%) - -===== ../test-interpreter/spec-test-3/local_get.wast ===== -- 37/37 (100.00%) - -===== ../test-interpreter/spec-test-3/local_init.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/local_set.wast ===== -- 54/54 (100.00%) - -===== ../test-interpreter/spec-test-3/local_tee.wast ===== -- 99/99 (100.00%) - -===== ../test-interpreter/spec-test-3/loop.wast ===== -- 106/106 (100.00%) - -===== ../test-interpreter/spec-test-3/memory.wast ===== -- 98/98 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/address64.wast ===== -- 246/246 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/align64.wast ===== -- 137/137 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/binary_leb128_64.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/bulk64.wast ===== -- 75/75 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/call_indirect64.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/endianness64.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/float_memory64.wast ===== -- 96/96 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/load64.wast ===== -- 85/85 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory64-imports.wast ===== -- 110/110 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory64.wast ===== -- 78/78 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_copy64.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_fill64.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_grow64.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_init64.wast ===== -- 264/264 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_redundancy64.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/memory_trap64.wast ===== -- 174/174 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table64.wast ===== -- 25/25 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_copy64.wast ===== -- 1779/1779 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_copy_mixed.wast ===== -- 5/5 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_fill64.wast ===== -- 81/81 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_get64.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_grow64.wast ===== -- 23/23 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_init64.wast ===== -- 913/913 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_set64.wast ===== -- 20/20 (100.00%) - -===== ../test-interpreter/spec-test-3/memory64/table_size64.wast ===== -- 38/38 (100.00%) - -===== ../test-interpreter/spec-test-3/memory_grow.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/memory_redundancy.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-3/memory_size.wast ===== -- 46/46 (100.00%) - -===== ../test-interpreter/spec-test-3/memory_trap.wast ===== -- 184/184 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/address0.wast ===== -- 93/93 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/address1.wast ===== -- 128/128 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/align0.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/binary0.wast ===== -- 10/10 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/data0.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/data1.wast ===== -- 28/28 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/data_drop0.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/exports0.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/float_exprs0.wast ===== -- 15/15 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/float_exprs1.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/float_memory0.wast ===== -- 32/32 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/imports0.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/imports1.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/imports2.wast ===== -- 24/24 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/imports3.wast ===== -- 10/10 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/imports4.wast ===== -- 18/18 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/linking0.wast ===== -- 7/7 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/linking1.wast ===== -- 19/19 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/linking2.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/linking3.wast ===== -- 17/17 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/load0.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/load1.wast ===== -- 19/19 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/load2.wast ===== -- 39/39 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory-multi.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_copy0.wast ===== -- 30/30 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_copy1.wast ===== -- 15/15 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_fill0.wast ===== -- 17/17 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_grow.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_init0.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_size0.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_size1.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_size2.wast ===== -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_size3.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_size_import.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_trap0.wast ===== -- 15/15 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/memory_trap1.wast ===== -- 169/169 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/start0.wast ===== -- 10/10 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/store0.wast ===== -- 6/6 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/store1.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/store2.wast ===== -- 26/26 (100.00%) - -===== ../test-interpreter/spec-test-3/multi-memory/traps0.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-3/names.wast ===== -- print_i32: 42 -- print_i32: 123 -- 490/490 (100.00%) - -===== ../test-interpreter/spec-test-3/nop.wast ===== -- 89/89 (100.00%) - -===== ../test-interpreter/spec-test-3/obsolete-keywords.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/ref.wast ===== -- 14/14 (100.00%) - -===== ../test-interpreter/spec-test-3/ref_as_non_null.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-3/ref_func.wast ===== -- 19/19 (100.00%) - -===== ../test-interpreter/spec-test-3/ref_is_null.wast ===== -- 24/24 (100.00%) - -===== ../test-interpreter/spec-test-3/ref_null.wast ===== -- 36/36 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/i16x8_relaxed_q15mulr_s.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/i32x4_relaxed_trunc.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/i8x16_relaxed_swizzle.wast ===== -- 7/7 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/relaxed_dot_product.wast ===== -- 12/12 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/relaxed_laneselect.wast ===== -- 13/13 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/relaxed_madd_nmadd.wast ===== -- 21/21 (100.00%) - -===== ../test-interpreter/spec-test-3/relaxed-simd/relaxed_min_max.wast ===== -- 26/26 (100.00%) - -===== ../test-interpreter/spec-test-3/return.wast ===== -- 85/85 (100.00%) - -===== ../test-interpreter/spec-test-3/return_call.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/return_call_indirect.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/return_call_ref.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/select.wast ===== -- 160/160 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_address.wast ===== -- 50/50 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_align.wast ===== -- 112/112 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_bit_shift.wast ===== -- 239/239 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_bitwise.wast ===== -- 171/171 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_boolean.wast ===== -- 275/275 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_const.wast ===== -- 889/889 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_conversions.wast ===== -- 254/254 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f32x4.wast ===== -- 784/784 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f32x4_arith.wast ===== -- 1825/1825 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f32x4_cmp.wast ===== -- 2603/2603 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f32x4_pmin_pmax.wast ===== -- 3880/3880 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f32x4_rounding.wast ===== -- 186/186 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f64x2.wast ===== -- 805/805 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f64x2_arith.wast ===== -- 1828/1828 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f64x2_cmp.wast ===== -- 2681/2681 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f64x2_pmin_pmax.wast ===== -- 3880/3880 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_f64x2_rounding.wast ===== -- 186/186 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_arith.wast ===== -- 196/196 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_arith2.wast ===== -- 172/172 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_cmp.wast ===== -- 467/467 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_extadd_pairwise_i8x16.wast ===== -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_extmul_i8x16.wast ===== -- 118/118 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_q15mulr_sat_s.wast ===== -- 31/31 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i16x8_sat_arith.wast ===== -- 220/220 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_arith.wast ===== -- 196/196 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_arith2.wast ===== -- 139/139 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_cmp.wast ===== -- 467/467 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_dot_i16x8.wast ===== -- 33/33 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_extadd_pairwise_i16x8.wast ===== -- 22/22 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_extmul_i16x8.wast ===== -- 118/118 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_trunc_sat_f32x4.wast ===== -- 108/108 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i32x4_trunc_sat_f64x2.wast ===== -- 108/108 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i64x2_arith.wast ===== -- 202/202 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i64x2_arith2.wast ===== -- 27/27 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i64x2_cmp.wast ===== -- 114/114 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i64x2_extmul_i32x4.wast ===== -- 118/118 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i8x16_arith.wast ===== -- 133/133 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i8x16_arith2.wast ===== -- 207/207 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i8x16_cmp.wast ===== -- 447/447 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_i8x16_sat_arith.wast ===== -- 204/204 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_int_to_int_extend.wast ===== -- 254/254 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_lane.wast ===== -- 381/381 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_linking.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load.wast ===== -- 50/50 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load16_lane.wast ===== -- 37/37 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load32_lane.wast ===== -- 25/25 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load64_lane.wast ===== -- 17/17 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load8_lane.wast ===== -- 53/53 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load_extend.wast ===== -- 100/100 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load_splat.wast ===== -- 124/124 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_load_zero.wast ===== -- 35/35 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_memory-multi.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_select.wast ===== -- 8/8 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_splat.wast ===== -- 188/188 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_store.wast ===== -- 27/27 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_store16_lane.wast ===== -- 37/37 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_store32_lane.wast ===== -- 25/25 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_store64_lane.wast ===== -- 17/17 (100.00%) - -===== ../test-interpreter/spec-test-3/simd/simd_store8_lane.wast ===== -- 53/53 (100.00%) - -===== ../test-interpreter/spec-test-3/skip-stack-guard-page.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/stack.wast ===== -- 9/9 (100.00%) - -===== ../test-interpreter/spec-test-3/start.wast ===== -- print_i32: 1 -- print_i32: 2 -- print: () -- 25/25 (100.00%) - -===== ../test-interpreter/spec-test-3/store.wast ===== -- 62/62 (100.00%) - -===== ../test-interpreter/spec-test-3/switch.wast ===== -- 29/29 (100.00%) - -===== ../test-interpreter/spec-test-3/table.wast ===== -- 59/59 (100.00%) - -===== ../test-interpreter/spec-test-3/table_get.wast ===== -- 17/17 (100.00%) - -===== ../test-interpreter/spec-test-3/table_grow.wast ===== -- 64/64 (100.00%) - -===== ../test-interpreter/spec-test-3/table_set.wast ===== -- 27/27 (100.00%) - -===== ../test-interpreter/spec-test-3/table_size.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-3/token.wast ===== -- 70/70 (100.00%) - -===== ../test-interpreter/spec-test-3/traps.wast ===== -- 40/40 (100.00%) - -===== ../test-interpreter/spec-test-3/type-canon.wast ===== -- 4/4 (100.00%) - -===== ../test-interpreter/spec-test-3/type-equivalence.wast ===== -- 47/47 (100.00%) - -===== ../test-interpreter/spec-test-3/type-rec.wast ===== -- 37/37 (100.00%) - -===== ../test-interpreter/spec-test-3/type.wast ===== -- 2/2 (100.00%) - -===== ../test-interpreter/spec-test-3/unreachable.wast ===== -- 65/65 (100.00%) - -===== ../test-interpreter/spec-test-3/unreached-invalid.wast ===== -- 121/121 (100.00%) - -===== ../test-interpreter/spec-test-3/unreached-valid.wast ===== -- 16/16 (100.00%) - -===== ../test-interpreter/spec-test-3/unwind.wast ===== -- 51/51 (100.00%) - -===== ../test-interpreter/spec-test-3/utf8-custom-section-id.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/utf8-import-field.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/utf8-import-module.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/utf8-invalid-encoding.wast ===== -- 0/0 (100.00%) - -===== ../test-interpreter/spec-test-3/wide-arithmetic.wast ===== -- 111/111 (100.00%) - -Total [55803/55803] (100.00%) - -== Complete. +../../../_specification/wasm-3.0/*.spectec: No such file or directory +[2] ``` diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 8601e51dec..e95dac1968 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -43,7 +43,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{InfixArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{InfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -55,7 +54,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} {}) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} b) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{InfixArrow{\kern-0.1em\scriptstyle 2}}}(a \Rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -67,7 +65,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{AtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{AtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -79,7 +76,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}\,b) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{AtomArrow{\kern-0.1em\scriptstyle 2}}}(a~{\Rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -98,7 +94,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{MacroInfixArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{MacroInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -110,7 +105,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{MacroAtomArrow}}(a \rightarrow_{c} {}) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{c} b) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{MacroAtomArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -129,25 +123,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowInfixArrow}}(a \rightarrow_{c} ) & = & 0 \\ {\mathrm{ShowInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{ShowInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\mathrm{ShowInfixArrow}}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\mathrm{ShowInfixArrow}}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowAtomArrow}}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowAtomArrow}}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -160,25 +152,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} ) & = & 0 \\ {\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} b) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroInfixArrow}}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroInfixArrow}}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}) & = & 0 \\ {\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\mathrm{ShowMacroAtomArrow}}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\mathrm{ShowMacroAtomArrow}}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -950,29 +940,29 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{gram}} & ::= & \mbox{‘}\mathtt{GA}\mbox{’}~~\mbox{‘}\mathtt{GB}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GB}\mbox{’}~~\mbox{‘}\mathtt{GC}\mbox{’}~~\mbox{‘}\mathtt{GD}\mbox{’} & \quad\Rightarrow\quad{} & 0 \\ -& & | & \mbox{‘}\mathtt{GC}\mbox{’}~~\mbox{‘}\mathtt{GD}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GD}\mbox{’}~~\mbox{‘}\mathtt{GE}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad +& {\mathtt{gram}} & ::= & \mbox{‘\texttt{GA}’}~~\mbox{‘\texttt{GB}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GB}’}~~\mbox{‘\texttt{GC}’}~~\mbox{‘\texttt{GD}’} & \quad\Rightarrow\quad{} & 0 \\ +& & | & \mbox{‘\texttt{GC}’}~~\mbox{‘\texttt{GD}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GD}’}~~\mbox{‘\texttt{GE}’} & \quad\Rightarrow\quad{} & 0 & \quad \begin{array}[t]{@{}l@{}} \mbox{if}~ 0 < 1 \\ {\land}~ 1 > 0 \\ \end{array} \\ -& & | & \mbox{‘}\mathtt{GE}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GFA}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} ~\Rightarrow~ 0 ~~|~~ \mbox{‘}\mathtt{GFB}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} ~\Rightarrow~ 1 ~~|~~ \mbox{‘}\mathtt{GFC}\mbox{’} & \quad\Rightarrow\quad{} & 2 \\ -& & | & \mbox{‘}\mathtt{GG}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GE}’}~~\mbox{‘\texttt{GF}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GFA}’}~~\mbox{‘\texttt{GF}’} ~\Rightarrow~ 0 ~~|~~ \mbox{‘\texttt{GFB}’}~~\mbox{‘\texttt{GF}’} ~\Rightarrow~ 1 ~~|~~ \mbox{‘\texttt{GFC}’} & \quad\Rightarrow\quad{} & 2 \\ +& & | & \mbox{‘\texttt{GG}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} 0 & \quad \mbox{if}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GH}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GH}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} 0 & \quad \mbox{if}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} \begin{array}[t]{@{}l@{}} 0 \\ @@ -984,15 +974,15 @@ $$ \end{array} \\ \end{array} } \\ -& & | & \begin{array}[t]{@{}l@{}} \mbox{‘}\mathtt{GJ}\mbox{’}~~\mbox{‘}\mathtt{GJ}\mbox{’} \\ - \mbox{‘}\mathtt{G}\mbox{’}~~\mbox{‘}\mathtt{J}\mbox{’} \end{array} & \quad\Rightarrow\quad{} & 0 \\ -& & | & \begin{array}[t]{@{}l@{}} \mbox{‘}\mathtt{GK}\mbox{’}~~\mbox{‘}\mathtt{GJ}\mbox{’} \\ - \mbox{‘}\mathtt{G}\mbox{’}~~\mbox{‘}\mathtt{J}\mbox{’} \end{array} & \quad\Rightarrow\quad{} & 0 & \quad +& & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{GJ}’}~~\mbox{‘\texttt{GJ}’} \\ + \mbox{‘\texttt{G}’}~~\mbox{‘\texttt{J}’} \end{array} & \quad\Rightarrow\quad{} & 0 \\ +& & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{GK}’}~~\mbox{‘\texttt{GJ}’} \\ + \mbox{‘\texttt{G}’}~~\mbox{‘\texttt{J}’} \end{array} & \quad\Rightarrow\quad{} & 0 & \quad \begin{array}[t]{@{}l@{}} \mbox{if}~ 0 < 1 \\ {\land}~ 1 > 0 \\ \end{array} \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & 0~1~2 & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & 0~1~2 & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} @@ -1000,7 +990,7 @@ $$ {\land}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}l@{}} \begin{array}[t]{@{}l@{}} 0 \\ @@ -1228,7 +1218,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\InfixArrow}(a \rightarrow_{c} {}) & = & 0 \\ {\InfixArrow}(a \rightarrow_{c} b) & = & 0 \\ {\InfixArrow}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\InfixArrow}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -1240,7 +1229,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\InfixArrow2}(a \Rightarrow_{c} {}) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{c} b) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{{c^\ast}} b) & = & 0 \\ {\InfixArrow2}(a \Rightarrow_{c} b_1~b_2) & = & 0 \\ @@ -1252,7 +1240,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\AtomArrow}(a~{\rightarrow}_{c}) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{c}\,b) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\AtomArrow}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -1264,7 +1251,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\AtomArrow2}(a~{\Rightarrow}_{c}) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{c}\,b) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\AtomArrow2}(a~{\Rightarrow}_{c}\,b_1~b_2) & = & 0 \\ @@ -1283,7 +1269,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\MacroInfixArrow}(a \to_{c} {}) & = & 0 \\ {\MacroInfixArrow}(a \to_{c} b) & = & 0 \\ {\MacroInfixArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\MacroInfixArrow}(a \to_{c} b_1~b_2) & = & 0 \\ @@ -1295,7 +1280,6 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\MacroAtomArrow}(a \to_{c} {}) & = & 0 \\ {\MacroAtomArrow}(a \to_{c} b) & = & 0 \\ {\MacroAtomArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\MacroAtomArrow}(a \to_{c} b_1~b_2) & = & 0 \\ @@ -1314,25 +1298,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowInfixArrow}(a \rightarrow_{c} ) & = & 0 \\ {\ShowInfixArrow}(a \rightarrow_{c} b) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{({c^\ast})} b) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{{c^\ast}} b) & = & 0 \\ {\ShowInfixArrow}(a \rightarrow_{c} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}(a \rightarrow_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\ShowInfixArrow}({\rightarrow}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}(a \rightarrow_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\ShowInfixArrow}({\rightarrow}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowAtomArrow}(a~{\rightarrow}_{c}) & = & 0 \\ {\ShowAtomArrow}(a~{\rightarrow}_{c}\,b) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{({c^\ast})}\,b) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b) & = & 0 \\ {\ShowAtomArrow}(a~{\rightarrow}_{c}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}(a~{\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\ShowAtomArrow}({\rightarrow}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}(a~{\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\ShowAtomArrow}({\rightarrow}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -1345,25 +1327,23 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowMacroInfixArrow}(a \to_{c} ) & = & 0 \\ {\ShowMacroInfixArrow}(a \to_{c} b) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{({c^\ast})} b) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{{c^\ast}} b) & = & 0 \\ {\ShowMacroInfixArrow}(a \to_{c} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{({c^\ast})} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}(a \to_{(c_1~c_2)} b_1~b_2) & = & 0 \\ -{\ShowMacroInfixArrow}({\to}_{(c_1~c_2)} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{{c^\ast}} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}(a \to_{c_1~c_2} b_1~b_2) & = & 0 \\ +{\ShowMacroInfixArrow}({\to}_{c_1~c_2} b_1~b_2) & = & 0 \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\ShowMacroAtomArrow}(a~{\to}_{c}) & = & 0 \\ {\ShowMacroAtomArrow}(a~{\to}_{c}\,b) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{({c^\ast})}\,b) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{{c^\ast}}\,b) & = & 0 \\ {\ShowMacroAtomArrow}(a~{\to}_{c}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{({c^\ast})}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}(a~{\to}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ -{\ShowMacroAtomArrow}({\to}_{(c_1~c_2)}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{{c^\ast}}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}(a~{\to}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ +{\ShowMacroAtomArrow}({\to}_{c_1~c_2}\,b_1~b_2) & = & 0 \\ \end{array} $$ @@ -1681,15 +1661,15 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\parentimplicit}(t) & ::= & \PP \\ +& {\parentimplicit}(t) & ::= & \PPimpl \\ & & | & \PPX \\ & & | & \PPYxPPY \\ & & | & \mathsf{ppz} \\ -& & | & \QQQ \\ +& & | & \QQQimpl \\ & & | & \QQQX \\ & & | & \QQQYxQQQY \\ & & | & \mathsf{qqqz} \\ -& & | & {t}{\mathsf{\_}}{\RA}{\RR}~z \\ +& & | & {t}{\mathsf{\_}}{\RAimpl}{\RRimpl}~{\mathit{zimpl}} \\ & & | & {t}{\mathsf{\_}}{\RB}{\RRX}~z \\ & & | & {t}{\mathsf{\_}}{\RCxRC}{\RRYxRRY}~{\mathit{zxz}} \\ & & | & {t}{\mathsf{\_}}{\mathsf{rd}}{\mathsf{rrz}}~z \\ @@ -1738,7 +1718,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\family}(0) & ::= & \FF \\ +& {\family}(0) & ::= & \FFfamily \\ & {\family}(1) & ::= & \GGfamily \\ & {\family}(2) & ::= & \xHHy \\ \end{array} @@ -2135,29 +2115,29 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\gram} & ::= & \mbox{‘}\mathtt{GA}\mbox{’}~~\mbox{‘}\mathtt{GB}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GB}\mbox{’}~~\mbox{‘}\mathtt{GC}\mbox{’}~~\mbox{‘}\mathtt{GD}\mbox{’} & \quad\Rightarrow\quad{} & 0 \\ -& & | & \mbox{‘}\mathtt{GC}\mbox{’}~~\mbox{‘}\mathtt{GD}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GD}\mbox{’}~~\mbox{‘}\mathtt{GE}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad +& {\gram} & ::= & \mbox{‘\texttt{GA}’}~~\mbox{‘\texttt{GB}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GB}’}~~\mbox{‘\texttt{GC}’}~~\mbox{‘\texttt{GD}’} & \quad\Rightarrow\quad{} & 0 \\ +& & | & \mbox{‘\texttt{GC}’}~~\mbox{‘\texttt{GD}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GD}’}~~\mbox{‘\texttt{GE}’} & \quad\Rightarrow\quad{} & 0 & \quad \begin{array}[t]{@{}l@{}} \mbox{if}~ 0 < 1 \\ {\land}~ 1 > 0 \\ \end{array} \\ -& & | & \mbox{‘}\mathtt{GE}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ -& & | & \mbox{‘}\mathtt{GFA}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} ~\Rightarrow~ 0 ~~|~~ \mbox{‘}\mathtt{GFB}\mbox{’}~~\mbox{‘}\mathtt{GF}\mbox{’} ~\Rightarrow~ 1 ~~|~~ \mbox{‘}\mathtt{GFC}\mbox{’} & \quad\Rightarrow\quad{} & 2 \\ -& & | & \mbox{‘}\mathtt{GG}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GE}’}~~\mbox{‘\texttt{GF}’} & \quad\Rightarrow\quad{} & 0 & \quad \mbox{if}~ 0 < 1 \\ +& & | & \mbox{‘\texttt{GFA}’}~~\mbox{‘\texttt{GF}’} ~\Rightarrow~ 0 ~~|~~ \mbox{‘\texttt{GFB}’}~~\mbox{‘\texttt{GF}’} ~\Rightarrow~ 1 ~~|~~ \mbox{‘\texttt{GFC}’} & \quad\Rightarrow\quad{} & 2 \\ +& & | & \mbox{‘\texttt{GG}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} 0 & \quad \mbox{if}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GH}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GH}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} 0 & \quad \mbox{if}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}} \begin{array}[t]{@{}l@{}} 0 \\ @@ -2169,15 +2149,15 @@ $$ \end{array} \\ \end{array} } \\ -& & | & \begin{array}[t]{@{}l@{}} \mbox{‘}\mathtt{GJ}\mbox{’}~~\mbox{‘}\mathtt{GJ}\mbox{’} \\ - \mbox{‘}\mathtt{G}\mbox{’}~~\mbox{‘}\mathtt{J}\mbox{’} \end{array} & \quad\Rightarrow\quad{} & 0 \\ -& & | & \begin{array}[t]{@{}l@{}} \mbox{‘}\mathtt{GK}\mbox{’}~~\mbox{‘}\mathtt{GJ}\mbox{’} \\ - \mbox{‘}\mathtt{G}\mbox{’}~~\mbox{‘}\mathtt{J}\mbox{’} \end{array} & \quad\Rightarrow\quad{} & 0 & \quad +& & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{GJ}’}~~\mbox{‘\texttt{GJ}’} \\ + \mbox{‘\texttt{G}’}~~\mbox{‘\texttt{J}’} \end{array} & \quad\Rightarrow\quad{} & 0 \\ +& & | & \begin{array}[t]{@{}l@{}} \mbox{‘\texttt{GK}’}~~\mbox{‘\texttt{GJ}’} \\ + \mbox{‘\texttt{G}’}~~\mbox{‘\texttt{J}’} \end{array} & \quad\Rightarrow\quad{} & 0 & \quad \begin{array}[t]{@{}l@{}} \mbox{if}~ 0 < 1 \\ {\land}~ 1 > 0 \\ \end{array} \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & 0~1~2 & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & 0~1~2 & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} @@ -2185,7 +2165,7 @@ $$ {\land}~ 1 > 0 \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{GI}\mbox{’} & \quad\Rightarrow\quad{} & & \\ +& & | & \mbox{‘\texttt{GI}’} & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}l@{}l@{}} \begin{array}[t]{@{}l@{}} 0 \\ @@ -2378,7 +2358,6 @@ $ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec --la $$ \begin{array}[t]{@{}lrrl@{}l@{}} & N & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ -& M & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ & K & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ & n & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ & m & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ @@ -2497,8 +2476,10 @@ $$ & {\mathit{u{\kern-0.1em\scriptstyle 31}}} & ::= & {u}{\mathsf{{\scriptstyle 31}}} \\ & {\mathit{u{\kern-0.1em\scriptstyle 32}}} & ::= & {u}{\mathsf{{\scriptstyle 32}}} \\ & {\mathit{u{\kern-0.1em\scriptstyle 64}}} & ::= & {u}{\mathsf{{\scriptstyle 64}}} \\ -& {\mathit{u{\kern-0.1em\scriptstyle 128}}} & ::= & {u}{\mathsf{{\scriptstyle 128}}} \\ & {\mathit{s{\kern-0.1em\scriptstyle 33}}} & ::= & {s}{\mathsf{{\scriptstyle 33}}} \\ +& {\mathit{i{\kern-0.1em\scriptstyle 32}}} & ::= & {i}{\mathsf{{\scriptstyle 32}}} \\ +& {\mathit{i{\kern-0.1em\scriptstyle 64}}} & ::= & {i}{\mathsf{{\scriptstyle 64}}} \\ +& {\mathit{i{\kern-0.1em\scriptstyle 128}}} & ::= & {i}{\mathsf{{\scriptstyle 128}}} \\ \end{array} $$ @@ -2551,7 +2532,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{+N} & = & {+((1 + n \cdot {2^{{-M}}}) \cdot {2^{0}})} \\ +{+n} & = & {+((1 + n \cdot {2^{{-M}}}) \cdot {2^{0}})} \\ \end{array} $$ @@ -2676,7 +2657,8 @@ $$ \mathsf{elems}~{{\mathit{elemidx}}^\ast} \\ \mathsf{datas}~{{\mathit{dataidx}}^\ast} \\ \mathsf{locals}~{{\mathit{localidx}}^\ast} \\ -\mathsf{labels}~{{\mathit{labelidx}}^\ast} \} \\ +\mathsf{labels}~{{\mathit{labelidx}}^\ast} \\ +\mathsf{tags}~{{\mathit{tagidx}}^\ast} \} \\ \end{array} \\ \end{array} $$ @@ -2753,12 +2735,19 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) & = & \{ \mathsf{tags}~{\mathit{tagidx}} \} \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{free}}_{\mathit{externidx}}(\mathsf{func}~{\mathit{funcidx}}) & = & {\mathrm{free}}_{\mathit{funcidx}}({\mathit{funcidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{global}~{\mathit{globalidx}}) & = & {\mathrm{free}}_{\mathit{globalidx}}({\mathit{globalidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{table}~{\mathit{tableidx}}) & = & {\mathrm{free}}_{\mathit{tableidx}}({\mathit{tableidx}}) \\ {\mathrm{free}}_{\mathit{externidx}}(\mathsf{mem}~{\mathit{memidx}}) & = & {\mathrm{free}}_{\mathit{memidx}}({\mathit{memidx}}) \\ +{\mathrm{free}}_{\mathit{externidx}}(\mathsf{tag}~{\mathit{tagidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \\ \end{array} $$ @@ -3351,7 +3340,7 @@ $$ {(\mathsf{global}~{\mathit{gt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{global}~{{\mathit{gt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ {(\mathsf{table}~{\mathit{tt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{table}~{{\mathit{tt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ {(\mathsf{mem}~{\mathit{mt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{mem}~{{\mathit{mt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ -{(\mathsf{func}~{\mathit{dt}})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{func}~{{\mathit{dt}}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ +{(\mathsf{func}~{\mathit{tu}'})}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} & = & \mathsf{func}~{{\mathit{tu}'}}{{}[ {{\mathit{tv}}^\ast} := {{\mathit{tu}}^\ast} ]} \\ \end{array} $$ @@ -3450,12 +3439,6 @@ $$ \end{array} $$ -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{expand}}({\mathit{deftype}}) & = & {\mathit{comptype}} & \quad \mbox{if}~ {\mathrm{unroll}}({\mathit{deftype}}) = \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{comptype}} \\ -\end{array} -$$ - \vspace{1ex} \vspace{1ex} @@ -3666,8 +3649,8 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{lane}}}_{{\mathit{numtype}}} & ::= & {{\mathit{num}}}_{{\mathit{numtype}}} \\ & {{\mathit{lane}}}_{{\mathit{packtype}}} & ::= & {{\mathit{pack}}}_{{\mathit{packtype}}} \\ -& {{\mathit{lane}}}_{{\mathsf{i}}{N}} & ::= & {i}{{|{\mathsf{i}}{N}|}} \\ -& {{\mathit{vec}}}_{{\mathsf{v}}{N}} & ::= & {v}{{|{\mathsf{v}}{N}|}} \\ +& {{\mathit{lane}}}_{{\mathsf{i}}{N}} & ::= & {i}{N} \\ +& {{\mathit{vec}}}_{{\mathsf{v}}{N}} & ::= & {v}{N} \\ \end{array} $$ @@ -3749,26 +3732,25 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(dimension)} & {\mathit{dim}} & ::= & \mathsf{{\scriptstyle 1}} ~~|~~ \mathsf{{\scriptstyle 2}} ~~|~~ \mathsf{{\scriptstyle 4}} ~~|~~ \mathsf{{\scriptstyle 8}} ~~|~~ \mathsf{{\scriptstyle 16}} \\ \mbox{(shape)} & {\mathit{shape}} & ::= & {{\mathit{lanetype}}}{\mathsf{x}}{{\mathit{dim}}} & \quad \mbox{if}~ {|{\mathit{lanetype}}|} \cdot {\mathit{dim}} = 128 \\ +& M & ::= & {\mathit{dim}} \\ \end{array} $$ -\vspace{1ex} - $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{dim}}({{\mathsf{i}}{N}}{\mathsf{x}}{N}) & = & N \\ +{\mathrm{dim}}({{\mathsf{i}}{N}}{\mathsf{x}}{M}) & = & M \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{lanetype}}({{\mathsf{i}}{N}}{\mathsf{x}}{N}) & = & {\mathsf{i}}{N} \\ +{\mathrm{lanetype}}({{\mathsf{i}}{N}}{\mathsf{x}}{M}) & = & {\mathsf{i}}{N} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{unpack}}({{\mathsf{i}}{N}}{\mathsf{x}}{N}) & = & {\mathrm{unpack}}({\mathsf{i}}{N}) \\ +{\mathrm{unpack}}({{\mathsf{i}}{N}}{\mathsf{x}}{M}) & = & {\mathrm{unpack}}({\mathsf{i}}{N}) \\ \end{array} $$ @@ -3798,7 +3780,8 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{vunop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} \\ & & | & \mathsf{popcnt} & \quad \mbox{if}~ N = \mathsf{{\scriptstyle 8}} \\ -& {{\mathit{vunop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} ~~|~~ \mathsf{sqrt} ~~|~~ \mathsf{ceil} ~~|~~ \mathsf{floor} ~~|~~ \mathsf{trunc} ~~|~~ \mathsf{nearest} \\ +& {{\mathit{vunop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{abs} ~~|~~ \mathsf{neg} ~~|~~ \mathsf{sqrt} \\ +& & | & \mathsf{ceil} ~~|~~ \mathsf{floor} ~~|~~ \mathsf{trunc} ~~|~~ \mathsf{nearest} \\ \end{array} $$ @@ -3814,7 +3797,8 @@ $$ & & | & {\mathsf{relaxed\_q{\scriptstyle 15}mulr}}{\mathsf{\_}}{\mathsf{s}} & \quad \mbox{if}~ N = \mathsf{{\scriptstyle 16}} \\ & & | & {\mathsf{min}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N \leq \mathsf{{\scriptstyle 32}} \\ & & | & {\mathsf{max}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N \leq \mathsf{{\scriptstyle 32}} \\ -& {{\mathit{vbinop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{add} ~~|~~ \mathsf{sub} ~~|~~ \mathsf{mul} ~~|~~ \mathsf{div} ~~|~~ \mathsf{min} ~~|~~ \mathsf{max} ~~|~~ \mathsf{pmin} ~~|~~ \mathsf{pmax} \\ +& {{\mathit{vbinop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}} & ::= & \mathsf{add} ~~|~~ \mathsf{sub} ~~|~~ \mathsf{mul} ~~|~~ \mathsf{div} \\ +& & | & \mathsf{min} ~~|~~ \mathsf{max} ~~|~~ \mathsf{pmin} ~~|~~ \mathsf{pmax} \\ & & | & \mathsf{relaxed\_min} ~~|~~ \mathsf{relaxed\_max} \\ \end{array} $$ @@ -3878,9 +3862,9 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N_2 = 2 \cdot N_1 \\ -& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}~{\mathit{sx}}} & \quad \mbox{if}~ N_2 = N_1 = \mathsf{{\scriptstyle 32}} \land {{\mathit{half}}^?} = \epsilon \lor N_2 = 2 \cdot N_1 \land {{\mathit{half}}^?} = \mathsf{low} \\ -& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}} & \quad \mbox{if}~ N_1 = N_2 = \mathsf{{\scriptstyle 32}} \land {{\mathit{zero}}^?} = \epsilon \lor N_1 = 2 \cdot N_2 \land {{\mathit{zero}}^?} = \mathsf{zero} \\ -& & | & {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}} & \quad \mbox{if}~ N_1 = N_2 = \mathsf{{\scriptstyle 32}} \land {{\mathit{zero}}^?} = \epsilon \lor N_1 = 2 \cdot N_2 \land {{\mathit{zero}}^?} = \mathsf{zero} \\ +& {{\mathit{vcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N_2 = N_1 = \mathsf{{\scriptstyle 32}} \land {{\mathit{half}}^?} = \epsilon \lor N_2 = 2 \cdot N_1 \land {{\mathit{half}}^?} = \mathsf{low} \\ +& {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}} & \quad \mbox{if}~ N_1 = N_2 = \mathsf{{\scriptstyle 32}} \land {{\mathit{zero}}^?} = \epsilon \lor N_1 = 2 \cdot N_2 \land {{\mathit{zero}}^?} = \mathsf{zero} \\ +& & | & {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}} & \quad \mbox{if}~ N_1 = N_2 = \mathsf{{\scriptstyle 32}} \land {{\mathit{zero}}^?} = \epsilon \lor N_1 = 2 \cdot N_2 \land {{\mathit{zero}}^?} = \mathsf{zero} \\ & {{\mathit{vcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}} & ::= & {\mathsf{demote}}{\mathsf{\_}}{\mathsf{zero}} & \quad \mbox{if}~ N_1 = 2 \cdot N_2 \\ & & | & {\mathsf{promote}}{\mathsf{\_}}{\mathsf{low}} & \quad \mbox{if}~ 2 \cdot N_1 = N_2 \\ \end{array} @@ -3891,7 +3875,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(memory argument)} & {\mathit{memarg}} & ::= & \{ \begin{array}[t]{@{}l@{}l@{}} -\mathsf{align}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} , \mathsf{offset}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} \} \\ +\mathsf{align}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} , \mathsf{offset}~{\mathit{u{\kern-0.1em\scriptstyle 64}}} \} \\ \end{array} \\ \end{array} $$ @@ -3916,7 +3900,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(block type)} & {\mathit{blocktype}} & ::= & {{\mathit{valtype}}^?} \\ -& & | & {\mathit{funcidx}} \\ +& & | & {\mathit{typeidx}} \\ \end{array} $$ @@ -3990,8 +3974,8 @@ $$ & & | & {\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}} \\ & & | & \mathsf{struct{.}new}~{\mathit{typeidx}} \\ & & | & \mathsf{struct{.}new\_default}~{\mathit{typeidx}} \\ -& & | & {\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} \\ -& & | & \mathsf{struct{.}set}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} \\ +& & | & {\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{fieldidx}} \\ +& & | & \mathsf{struct{.}set}~{\mathit{typeidx}}~{\mathit{fieldidx}} \\ & & | & \mathsf{array{.}new}~{\mathit{typeidx}} \\ & & | & \mathsf{array{.}new\_default}~{\mathit{typeidx}} \\ & & | & \mathsf{array{.}new\_fixed}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}} \\ @@ -4078,11 +4062,18 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{free}}_{\mathit{blocktype}}({{\mathit{valtype}}^?}) & = & {\mathrm{free}}_{\mathit{opt}}({{\mathrm{free}}_{\mathit{valtype}}({\mathit{valtype}})^?}) \\ -{\mathrm{free}}_{\mathit{blocktype}}({\mathit{funcidx}}) & = & {\mathrm{free}}_{\mathit{funcidx}}({\mathit{funcidx}}) \\ +{\mathrm{free}}_{\mathit{blocktype}}({\mathit{typeidx}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ \end{array} $$ -\vspace{1ex} +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch}~{\mathit{tagidx}}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \oplus {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_ref}~{\mathit{tagidx}}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \oplus {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_all}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +{\mathrm{free}}_{\mathit{catch}}(\mathsf{catch\_all\_ref}~{\mathit{labelidx}}) & = & {\mathrm{free}}_{\mathit{labelidx}}({\mathit{labelidx}}) \\ +\end{array} +$$ $$ \begin{array}[t]{@{}lcl@{}l@{}} @@ -4137,6 +4128,14 @@ $$ {\mathrm{free}}_{\mathit{tableidx}}({\mathit{tableidx}}) \oplus {\mathrm{free}}_{\mathit{typeuse}}({\mathit{typeuse}}) \\ \end{array} } \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{throw}~{\mathit{tagidx}}) & = & {\mathrm{free}}_{\mathit{tagidx}}({\mathit{tagidx}}) \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{throw\_ref}) & = & \{ \} \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{try\_table}~{\mathit{blocktype}}~{{\mathit{catch}}^\ast}~{{\mathit{instr}}^\ast}) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{\mathrm{free}}_{\mathit{blocktype}}({\mathit{blocktype}}) \oplus {\mathrm{free}}_{\mathit{list}}({{\mathrm{free}}_{\mathit{catch}}({\mathit{catch}})^\ast}) \oplus {\mathrm{free}}_{\mathit{list}}({{\mathrm{free}}_{\mathit{instr}}({\mathit{instr}})^\ast}) \\ +\end{array} +} \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}}{.}\mathsf{const}~{\mathit{numlit}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}} {.} {\mathit{unop}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathit{numtype}} {.} {\mathit{binop}}) & = & {\mathrm{free}}_{\mathit{numtype}}({\mathit{numtype}}) \\ @@ -4204,7 +4203,7 @@ $$ {\mathrm{free}}_{\mathit{instr}}(\mathsf{ref{.}func}~{\mathit{funcidx}}) & = & {\mathrm{free}}_{\mathit{funcidx}}({\mathit{funcidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{ref{.}i{\scriptstyle 31}}) & = & \{ \} \\ {\mathrm{free}}_{\mathit{instr}}({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \{ \} \\ -{\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new}~{\mathit{typeidx}}) & = & \{ \} \\ +{\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new}~{\mathit{typeidx}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}new\_default}~{\mathit{typeidx}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ {\mathrm{free}}_{\mathit{instr}}(\mathsf{struct{.}set}~{\mathit{typeidx}}~{\mathit{u{\kern-0.1em\scriptstyle 32}}}) & = & {\mathrm{free}}_{\mathit{typeidx}}({\mathit{typeidx}}) \\ @@ -4365,7 +4364,18 @@ $$ \mbox{(start function)} & {\mathit{start}} & ::= & \mathsf{start}~{\mathit{funcidx}} \\ \mbox{(import)} & {\mathit{import}} & ::= & \mathsf{import}~{\mathit{name}}~{\mathit{name}}~{\mathit{externtype}} \\ \mbox{(export)} & {\mathit{export}} & ::= & \mathsf{export}~{\mathit{name}}~{\mathit{externidx}} \\ -\mbox{(module)} & {\mathit{module}} & ::= & \mathsf{module}~{{\mathit{type}}^\ast}~{{\mathit{import}}^\ast}~{{\mathit{tag}}^\ast}~{{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{func}}^\ast}~{{\mathit{data}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{start}}^?}~{{\mathit{export}}^\ast} \\ +\mbox{(module)} & {\mathit{module}} & ::= & \begin{array}[t]{@{}l@{}} \mathsf{module} \\ + {\mathit{list}}({\mathit{type}}) \\ + {\mathit{list}}({\mathit{import}}) \\ + {\mathit{list}}({\mathit{tag}}) \\ + {\mathit{list}}({\mathit{global}}) \\ + {\mathit{list}}({\mathit{mem}}) \\ + {\mathit{list}}({\mathit{table}}) \\ + {\mathit{list}}({\mathit{func}}) \\ + {\mathit{list}}({\mathit{data}}) \\ + {\mathit{list}}({\mathit{elem}}) \\ + {{\mathit{start}}^?} \\ + {\mathit{list}}({\mathit{export}}) \end{array} \\ \end{array} $$ @@ -4523,9 +4533,8 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -\mbox{(context)} & {\mathit{context}} & ::= & \{ \begin{array}[t]{@{}l@{}l@{}} +& {\mathit{context}} & ::= & \{ \begin{array}[t]{@{}l@{}l@{}} \mathsf{types}~{{\mathit{deftype}}^\ast} \\ -\mathsf{recs}~{{\mathit{subtype}}^\ast} \\ \mathsf{tags}~{{\mathit{tagtype}}^\ast} \\ \mathsf{globals}~{{\mathit{globaltype}}^\ast} \\ \mathsf{mems}~{{\mathit{memtype}}^\ast} \\ @@ -4536,7 +4545,8 @@ $$ \mathsf{locals}~{{\mathit{localtype}}^\ast} \\ \mathsf{labels}~{{\mathit{resulttype}}^\ast} \\ \mathsf{return}~{{\mathit{resulttype}}^?} \\ -\mathsf{refs}~{{\mathit{funcidx}}^\ast} \} \\ +\mathsf{refs}~{{\mathit{funcidx}}^\ast} \\ +\mathsf{recs}~{{\mathit{subtype}}^\ast} \} \\ \end{array} \\ \end{array} $$ @@ -4644,6 +4654,16 @@ C \vdash {\mathit{typeuse}} : \mathsf{ok} \end{array} $$ +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +C \vdash \mathsf{bot} : \mathsf{ok} +} \, {[\textsc{\scriptsize K{-}heap{-}bot}]} +\qquad +\end{array} +$$ + $$ \begin{array}{@{}c@{}}\displaystyle \frac{ @@ -4700,10 +4720,23 @@ $$ \vspace{1ex} +$\boxed{{\mathit{context}} \vdash {\mathit{localtype}} : \mathsf{ok}}$ + $\boxed{{\mathit{context}} \vdash {\mathit{resulttype}} : \mathsf{ok}}$ $\boxed{{\mathit{context}} \vdash {\mathit{instrtype}} : \mathsf{ok}}$ +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +C \vdash t : \mathsf{ok} +}{ +C \vdash {\mathit{init}}~t : \mathsf{ok} +} \, {[\textsc{\scriptsize K{-}local}]} +\qquad +\end{array} +$$ + $$ \begin{array}{@{}c@{}}\displaystyle \frac{ @@ -4738,7 +4771,7 @@ $\boxed{{\mathit{typeuse}} \approx_{{\mathit{context}}} {\mathit{comptype}}}$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize Expand}]} \quad & {\mathit{deftype}} & \approx & {\mathit{comptype}} & \quad \mbox{if}~ {\mathrm{expand}}({\mathit{deftype}}) = {\mathit{comptype}} \\ +{[\textsc{\scriptsize Expand}]} \quad & {\mathit{deftype}} & \approx & {\mathit{comptype}} & \quad \mbox{if}~ {\mathrm{unroll}}({\mathit{deftype}}) = \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{comptype}} \\ \end{array} $$ @@ -4754,7 +4787,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {\mathsf{ok}}{({\mathit{typeidx}})} & ::= & {\mathsf{ok}}{{\mathit{typeidx}}} \\ -& {\mathsf{ok}}{({\mathit{typeidx}}, n)} & ::= & {\mathsf{ok}}{({\mathit{typeidx}}, \mathbb{N})} \\ +& {\mathsf{ok}}{n} & ::= & {\mathsf{ok}}{\mathbb{N}} \\ \end{array} $$ @@ -4770,9 +4803,9 @@ $\boxed{{\mathit{context}} \vdash {\mathit{subtype}} : {\mathsf{ok}}{({\mathit{t $\boxed{{\mathit{context}} \vdash {\mathit{rectype}} : {\mathsf{ok}}{({\mathit{typeidx}})}}$ -$\boxed{{\mathit{context}} \vdash {\mathit{subtype}} : {\mathsf{ok}}{({\mathit{typeidx}}, n)}}$ +$\boxed{{\mathit{context}} \vdash {\mathit{subtype}} : {\mathsf{ok}}{n}}$ -$\boxed{{\mathit{context}} \vdash {\mathit{rectype}} : {\mathsf{ok}}{({\mathit{typeidx}}, n)}}$ +$\boxed{{\mathit{context}} \vdash {\mathit{rectype}} : {\mathsf{ok}}{n}}$ $\boxed{{\mathit{context}} \vdash {\mathit{deftype}} : \mathsf{ok}}$ @@ -4907,7 +4940,7 @@ $$ \qquad (x < x_0)^\ast \qquad -({\mathrm{unroll}}(C{.}\mathsf{types}{}[x]) = \mathsf{sub}~{{x'}^\ast}~{\mathit{comptype}'})^\ast +({\mathrm{unroll}}(C{.}\mathsf{types}{}[x]) = \mathsf{sub}~{y^\ast}~{\mathit{comptype}'})^\ast \\ C \vdash {\mathit{comptype}} : \mathsf{ok} \qquad @@ -4922,17 +4955,16 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathit{deftype}} \prec x, i & = & \mathsf{true} \\ -{\mathit{typeidx}} \prec x, i & = & {\mathit{typeidx}} < x \\ -\mathsf{rec} {.} j \prec x, i & = & j < i \\ +\mathsf{rec} {.} j \prec i & = & j < i \\ +{\mathit{typeuse}} \prec i & = & \mathsf{true} & \quad \mbox{otherwise} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{unroll}}}_{C}({\mathit{deftype}}) & = & {\mathrm{unroll}}({\mathit{deftype}}) \\ -{{\mathrm{unroll}}}_{C}({\mathit{typeidx}}) & = & {\mathrm{unroll}}(C{.}\mathsf{types}{}[{\mathit{typeidx}}]) \\ -{{\mathrm{unroll}}}_{C}(\mathsf{rec} {.} i) & = & C{.}\mathsf{recs}{}[i] \\ +{{\mathrm{unrollht}}}_{C}({\mathit{deftype}}) & = & {\mathrm{unroll}}({\mathit{deftype}}) \\ +{{\mathrm{unrollht}}}_{C}({\mathit{typeidx}}) & = & {\mathrm{unroll}}(C{.}\mathsf{types}{}[{\mathit{typeidx}}]) \\ +{{\mathrm{unrollht}}}_{C}(\mathsf{rec} {.} i) & = & C{.}\mathsf{recs}{}[i] \\ \end{array} $$ @@ -4942,16 +4974,18 @@ $$ \begin{array}{@{}c@{}} {|{{\mathit{typeuse}}^\ast}|} \leq 1 \qquad -({\mathit{typeuse}} \prec x, i)^\ast +(C \vdash {\mathit{typeuse}} : \mathsf{ok})^\ast \qquad -({{\mathrm{unroll}}}_{C}({\mathit{typeuse}}) = \mathsf{sub}~{{\mathit{typeuse}'}^\ast}~{\mathit{comptype}'})^\ast +({\mathit{typeuse}} \prec i)^\ast + \\ +({{\mathrm{unrollht}}}_{C}({\mathit{typeuse}}) = \mathsf{sub}~{{\mathit{typeuse}'}^\ast}~{\mathit{comptype}'})^\ast \\ C \vdash {\mathit{comptype}} : \mathsf{ok} \qquad (C \vdash {\mathit{comptype}} \leq {\mathit{comptype}'})^\ast \end{array} }{ -C \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{compttype}} : {\mathsf{ok}}{(x, i)} +C \vdash \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{comptype}} : {\mathsf{ok}}{(i)} } \, {[\textsc{\scriptsize K{-}sub2}]} \qquad \end{array} @@ -4982,22 +5016,13 @@ C \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\maths \end{array} $$ -$$ -\begin{array}{@{}c@{}}\displaystyle -\frac{ -C, \mathsf{recs}~{{\mathit{subtype}}^\ast} \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x, 0)} -}{ -C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x)} -} \, {[\textsc{\scriptsize K{-}rect{-}\_rec2}]} -\qquad -\end{array} -$$ +\vspace{1ex} $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -C \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(x, i)} +C \vdash \mathsf{rec}~\epsilon : {\mathsf{ok}}{(i)} } \, {[\textsc{\scriptsize K{-}rec2{-}empty}]} \qquad \end{array} @@ -5006,11 +5031,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(x, i)} +C \vdash {\mathit{subtype}}_1 : {\mathsf{ok}}{(i)} \qquad -C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(x + 1, i + 1)} +C \vdash \mathsf{rec}~{{\mathit{subtype}}^\ast} : {\mathsf{ok}}{(i + 1)} }{ -C \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(x, i)} +C \vdash \mathsf{rec}~({\mathit{subtype}}_1~{{\mathit{subtype}}^\ast}) : {\mathsf{ok}}{(i)} } \, {[\textsc{\scriptsize K{-}rec2{-}cons}]} \qquad \end{array} @@ -5021,7 +5046,7 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{rectype}} : {\mathsf{ok}}{(x)} +C, \mathsf{recs}~{{\mathit{subtype}}^{n}} \vdash {\mathit{rectype}} : {\mathsf{ok}}{(0)} \qquad {\mathit{rectype}} = \mathsf{rec}~{{\mathit{subtype}}^{n}} \qquad @@ -5067,7 +5092,7 @@ $$ \frac{ C \vdash {\mathit{typeuse}} : \mathsf{ok} \qquad -{\mathit{typeuse}} \approx_{C} \mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast} +{\mathit{typeuse}} \approx_{C} \mathsf{func}~{t_1^\ast} \rightarrow {}[] }{ C \vdash {\mathit{typeuse}} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}tag}]} @@ -5089,7 +5114,7 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{limits}} : {2^{16}} +C \vdash {\mathit{limits}} : {2^{{|{\mathit{addrtype}}|} - 16}} }{ C \vdash {\mathit{addrtype}}~{\mathit{limits}}~\mathsf{page} : \mathsf{ok} } \, {[\textsc{\scriptsize K{-}mem}]} @@ -5100,7 +5125,7 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{limits}} : {2^{32}} - 1 +C \vdash {\mathit{limits}} : {2^{{|{\mathit{addrtype}}|}}} - 1 \qquad C \vdash {\mathit{reftype}} : \mathsf{ok} }{ @@ -5334,13 +5359,46 @@ C \vdash {\mathit{heaptype}} \leq {\mathit{typeidx}} \end{array} $$ +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +C{.}\mathsf{recs}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~(\mathsf{struct}~{{\mathit{fieldtype}}^\ast}) +}{ +C \vdash \mathsf{rec} {.} i \leq \mathsf{struct} +} \, {[\textsc{\scriptsize S{-}heap{-}rec{-}struct}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +C{.}\mathsf{recs}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~(\mathsf{array}~{\mathit{fieldtype}}) +}{ +C \vdash \mathsf{rec} {.} i \leq \mathsf{array} +} \, {[\textsc{\scriptsize S{-}heap{-}rec{-}array}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +C{.}\mathsf{recs}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) +}{ +C \vdash \mathsf{rec} {.} i \leq \mathsf{func} +} \, {[\textsc{\scriptsize S{-}heap{-}rec{-}func}]} +\qquad +\end{array} +$$ + $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C{.}\mathsf{recs}{}[i] = \mathsf{sub}~{\mathsf{final}^?}~{{\mathit{typeuse}}^\ast}~{\mathit{ct}} }{ C \vdash \mathsf{rec} {.} i \leq {{\mathit{typeuse}}^\ast}{}[j] -} \, {[\textsc{\scriptsize S{-}heap{-}rec}]} +} \, {[\textsc{\scriptsize S{-}heap{-}rec{-}sub}]} \qquad \end{array} $$ @@ -5349,6 +5407,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{any} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{none} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}none}]} @@ -5360,6 +5420,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{func} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{nofunc} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}nofunc}]} @@ -5371,6 +5433,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{exn} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{noexn} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}noexn}]} @@ -5382,6 +5446,8 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ C \vdash {\mathit{heaptype}} \leq \mathsf{extern} + \qquad +{\mathit{heaptype}} \neq \mathsf{bot} }{ C \vdash \mathsf{noextern} \leq {\mathit{heaptype}} } \, {[\textsc{\scriptsize S{-}heap{-}noextern}]} @@ -5656,14 +5722,27 @@ $$ \frac{ n_1 \geq n_2 \qquad -m_1 \leq m_2 +(m_1 \leq m_2)^? +}{ +C \vdash {}[ n_1 .. m_1 ] \leq {}[ n_2 .. {m_2^?} ] +} \, {[\textsc{\scriptsize S{-}limits{-}max}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +n_1 \geq n_2 }{ -C \vdash {}[ n_1 .. m_1 ] \leq {}[ n_2 .. m_2 ] -} \, {[\textsc{\scriptsize S{-}limits}]} +C \vdash {}[ n_1 .. \epsilon ] \leq {}[ n_2 .. \epsilon ] +} \, {[\textsc{\scriptsize S{-}limits{-}eps}]} \qquad \end{array} $$ +\vspace{1ex} + $$ \begin{array}{@{}c@{}}\displaystyle \frac{ @@ -5801,7 +5880,7 @@ $$ \frac{ }{ C \vdash \mathsf{nop} : \epsilon \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}nop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}nop}]} \qquad \end{array} $$ @@ -5812,7 +5891,7 @@ $$ C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{unreachable} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}unreachable}]} +} \, {[\textsc{\scriptsize T{-}instr{-}unreachable}]} \qquad \end{array} $$ @@ -5823,7 +5902,7 @@ $$ C \vdash t : \mathsf{ok} }{ C \vdash \mathsf{drop} : t \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}drop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}drop}]} \qquad \end{array} $$ @@ -5834,7 +5913,7 @@ $$ C \vdash t : \mathsf{ok} }{ C \vdash \mathsf{select}~t : t~t~\mathsf{i{\scriptstyle 32}} \rightarrow t -} \, {[\textsc{\scriptsize T{-}select{-}expl}]} +} \, {[\textsc{\scriptsize T{-}instr{-}select{-}expl}]} \qquad \end{array} $$ @@ -5849,7 +5928,7 @@ C \vdash t \leq {t'} {t'} = {\mathit{numtype}} \lor {t'} = {\mathit{vectype}} }{ C \vdash \mathsf{select} : t~t~\mathsf{i{\scriptstyle 32}} \rightarrow t -} \, {[\textsc{\scriptsize T{-}select{-}impl}]} +} \, {[\textsc{\scriptsize T{-}instr{-}select{-}impl}]} \qquad \end{array} $$ @@ -5890,7 +5969,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_2^\ast}) \} \oplus C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} }{ C \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}block}]} +} \, {[\textsc{\scriptsize T{-}instr{-}block}]} \qquad \end{array} $$ @@ -5903,7 +5982,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_1^\ast}) \} \oplus C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} }{ C \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}loop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}loop}]} \qquad \end{array} $$ @@ -5918,7 +5997,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_2^\ast}) \} \oplus C \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_2^\ast}} {t_2^\ast} }{ C \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}if}]} +} \, {[\textsc{\scriptsize T{-}instr{-}if}]} \qquad \end{array} $$ @@ -5933,7 +6012,7 @@ C{.}\mathsf{labels}{}[l] = {t^\ast} C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{br}~l : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}br}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br}]} \qquad \end{array} $$ @@ -5944,7 +6023,7 @@ $$ C{.}\mathsf{labels}{}[l] = {t^\ast} }{ C \vdash \mathsf{br\_if}~l : {t^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t^\ast} -} \, {[\textsc{\scriptsize T{-}br\_if}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_if}]} \qquad \end{array} $$ @@ -5959,7 +6038,7 @@ C \vdash {t^\ast} \leq C{.}\mathsf{labels}{}[{l'}] C \vdash {t_1^\ast}~{t^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{br\_table}~{l^\ast}~{l'} : {t_1^\ast}~{t^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}br\_table}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_table}]} \qquad \end{array} $$ @@ -5972,7 +6051,7 @@ C{.}\mathsf{labels}{}[l] = {t^\ast} C \vdash {\mathit{ht}} : \mathsf{ok} }{ C \vdash \mathsf{br\_on\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast}~(\mathsf{ref}~{\mathit{ht}}) -} \, {[\textsc{\scriptsize T{-}br\_on\_null}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_on\_null}]} \qquad \end{array} $$ @@ -5983,7 +6062,7 @@ $$ C{.}\mathsf{labels}{}[l] = {t^\ast}~(\mathsf{ref}~{\mathsf{null}^?}~{\mathit{ht}}) }{ C \vdash \mathsf{br\_on\_non\_null}~l : {t^\ast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow {t^\ast} -} \, {[\textsc{\scriptsize T{-}br\_on\_non\_null}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_on\_non\_null}]} \qquad \end{array} $$ @@ -6002,7 +6081,7 @@ C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}} }{ C \vdash \mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~({\mathit{rt}}_1 \setminus {\mathit{rt}}_2) -} \, {[\textsc{\scriptsize T{-}br\_on\_cast}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_on\_cast}]} \qquad \end{array} $$ @@ -6021,7 +6100,7 @@ C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 C \vdash {\mathit{rt}}_1 \setminus {\mathit{rt}}_2 \leq {\mathit{rt}} }{ C \vdash \mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2 : {t^\ast}~{\mathit{rt}}_1 \rightarrow {t^\ast}~{\mathit{rt}}_2 -} \, {[\textsc{\scriptsize T{-}br\_on\_cast\_fail}]} +} \, {[\textsc{\scriptsize T{-}instr{-}br\_on\_cast\_fail}]} \qquad \end{array} $$ @@ -6034,7 +6113,7 @@ $$ C{.}\mathsf{funcs}{}[x] \approx \mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast} }{ C \vdash \mathsf{call}~x : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}call}]} +} \, {[\textsc{\scriptsize T{-}instr{-}call}]} \qquad \end{array} $$ @@ -6045,7 +6124,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast} }{ C \vdash \mathsf{call\_ref}~x : {t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}call\_ref}]} +} \, {[\textsc{\scriptsize T{-}instr{-}call\_ref}]} \qquad \end{array} $$ @@ -6060,7 +6139,7 @@ C \vdash {\mathit{rt}} \leq (\mathsf{ref}~\mathsf{null}~\mathsf{func}) C{.}\mathsf{types}{}[y] \approx \mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast} }{ C \vdash \mathsf{call\_indirect}~x~y : {t_1^\ast}~{\mathit{at}} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}call\_indirect}]} +} \, {[\textsc{\scriptsize T{-}instr{-}call\_indirect}]} \qquad \end{array} $$ @@ -6073,7 +6152,7 @@ C{.}\mathsf{return} = ({t^\ast}) C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{return} : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}return}]} +} \, {[\textsc{\scriptsize T{-}instr{-}return}]} \qquad \end{array} $$ @@ -6090,7 +6169,7 @@ C \vdash {t_2^\ast} \leq {{t'}_2^\ast} C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} }{ C \vdash \mathsf{return\_call}~x : {t_3^\ast}~{t_1^\ast} \rightarrow {t_4^\ast} -} \, {[\textsc{\scriptsize T{-}return\_call}]} +} \, {[\textsc{\scriptsize T{-}instr{-}return\_call}]} \qquad \end{array} $$ @@ -6107,7 +6186,7 @@ C \vdash {t_2^\ast} \leq {{t'}_2^\ast} C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} }{ C \vdash \mathsf{return\_call\_ref}~x : {t_3^\ast}~{t_1^\ast}~(\mathsf{ref}~\mathsf{null}~x) \rightarrow {t_4^\ast} -} \, {[\textsc{\scriptsize T{-}return\_call\_ref}]} +} \, {[\textsc{\scriptsize T{-}instr{-}return\_call\_ref}]} \qquad \end{array} $$ @@ -6130,7 +6209,7 @@ C \vdash {t_3^\ast} \rightarrow {t_4^\ast} : \mathsf{ok} \end{array} }{ C \vdash \mathsf{return\_call\_indirect}~x~y : {t_3^\ast}~{t_1^\ast}~{\mathit{at}} \rightarrow {t_4^\ast} -} \, {[\textsc{\scriptsize T{-}return\_call\_indirect}]} +} \, {[\textsc{\scriptsize T{-}instr{-}return\_call\_indirect}]} \qquad \end{array} $$ @@ -6147,7 +6226,7 @@ C{.}\mathsf{tags}{}[x] \approx \mathsf{func}~{t^\ast} \rightarrow \epsilon C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{throw}~x : {t_1^\ast}~{t^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}throw}]} +} \, {[\textsc{\scriptsize T{-}instr{-}throw}]} \qquad \end{array} $$ @@ -6158,7 +6237,7 @@ $$ C \vdash {t_1^\ast} \rightarrow {t_2^\ast} : \mathsf{ok} }{ C \vdash \mathsf{throw\_ref} : {t_1^\ast}~(\mathsf{ref}~\mathsf{null}~\mathsf{exn}) \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}throw\_ref}]} +} \, {[\textsc{\scriptsize T{-}instr{-}throw\_ref}]} \qquad \end{array} $$ @@ -6173,7 +6252,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} (C \vdash {\mathit{catch}} : \mathsf{ok})^\ast }{ C \vdash \mathsf{try\_table}~{\mathit{bt}}~{{\mathit{catch}}^\ast}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}try\_table}]} +} \, {[\textsc{\scriptsize T{-}instr{-}try\_table}]} \qquad \end{array} $$ @@ -6234,7 +6313,7 @@ $$ C \vdash {\mathit{ht}} : \mathsf{ok} }{ C \vdash \mathsf{ref{.}null}~{\mathit{ht}} : \epsilon \rightarrow (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) -} \, {[\textsc{\scriptsize T{-}ref.null}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.null}]} \qquad \end{array} $$ @@ -6247,7 +6326,7 @@ C{.}\mathsf{funcs}{}[x] = {\mathit{dt}} x \in C{.}\mathsf{refs} }{ C \vdash \mathsf{ref{.}func}~x : \epsilon \rightarrow (\mathsf{ref}~{\mathit{dt}}) -} \, {[\textsc{\scriptsize T{-}ref.func}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.func}]} \qquad \end{array} $$ @@ -6257,7 +6336,7 @@ $$ \frac{ }{ C \vdash \mathsf{ref{.}i{\scriptstyle 31}} : \mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~\mathsf{i{\scriptstyle 31}}) -} \, {[\textsc{\scriptsize T{-}ref.i31}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.i31}]} \qquad \end{array} $$ @@ -6268,7 +6347,7 @@ $$ C \vdash {\mathit{ht}} : \mathsf{ok} }{ C \vdash \mathsf{ref{.}is\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}ref.is\_null}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.is\_null}]} \qquad \end{array} $$ @@ -6279,7 +6358,7 @@ $$ C \vdash {\mathit{ht}} : \mathsf{ok} }{ C \vdash \mathsf{ref{.}as\_non\_null} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \rightarrow (\mathsf{ref}~{\mathit{ht}}) -} \, {[\textsc{\scriptsize T{-}ref.as\_non\_null}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.as\_non\_null}]} \qquad \end{array} $$ @@ -6289,7 +6368,7 @@ $$ \frac{ }{ C \vdash \mathsf{ref{.}eq} : (\mathsf{ref}~\mathsf{null}~\mathsf{eq})~(\mathsf{ref}~\mathsf{null}~\mathsf{eq}) \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}ref.eq}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.eq}]} \qquad \end{array} $$ @@ -6304,7 +6383,7 @@ C \vdash {\mathit{rt}'} : \mathsf{ok} C \vdash {\mathit{rt}} \leq {\mathit{rt}'} }{ C \vdash \mathsf{ref{.}test}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}ref.test}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.test}]} \qquad \end{array} $$ @@ -6319,7 +6398,7 @@ C \vdash {\mathit{rt}'} : \mathsf{ok} C \vdash {\mathit{rt}} \leq {\mathit{rt}'} }{ C \vdash \mathsf{ref{.}cast}~{\mathit{rt}} : {\mathit{rt}'} \rightarrow {\mathit{rt}} -} \, {[\textsc{\scriptsize T{-}ref.cast}]} +} \, {[\textsc{\scriptsize T{-}instr{-}ref.cast}]} \qquad \end{array} $$ @@ -6331,7 +6410,7 @@ $$ \frac{ }{ C \vdash {\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}} : (\mathsf{ref}~\mathsf{null}~\mathsf{i{\scriptstyle 31}}) \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}i31.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}i31.get}]} \qquad \end{array} $$ @@ -6344,7 +6423,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} }{ C \vdash \mathsf{struct{.}new}~x : {{\mathrm{unpack}}({\mathit{zt}})^\ast} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}struct.new}]} +} \, {[\textsc{\scriptsize T{-}instr{-}struct.new}]} \qquad \end{array} $$ @@ -6357,14 +6436,14 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}} ({{\mathrm{default}}}_{{\mathrm{unpack}}({\mathit{zt}})} \neq \epsilon)^\ast }{ C \vdash \mathsf{struct{.}new\_default}~x : \epsilon \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}struct.new\_default}]} +} \, {[\textsc{\scriptsize T{-}instr{-}struct.new\_default}]} \qquad \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) & = & {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) \\ +{\mathit{zt}} \neq {\mathrm{unpack}}({\mathit{zt}}) & = & {\mathit{zt}} \neq {\mathrm{unpack}}({\mathit{zt}}) \\ \end{array} $$ @@ -6375,10 +6454,10 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{ft}}^\ast} \qquad {{\mathit{ft}}^\ast}{}[i] = {\mathsf{mut}^?}~{\mathit{zt}} \qquad -{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) +{{\mathit{sx}}^?} \neq \epsilon \Leftrightarrow {\mathit{zt}} \neq {\mathrm{unpack}}({\mathit{zt}}) }{ C \vdash {\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i : (\mathsf{ref}~\mathsf{null}~x) \rightarrow {\mathrm{unpack}}({\mathit{zt}}) -} \, {[\textsc{\scriptsize T{-}struct.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}struct.get}]} \qquad \end{array} $$ @@ -6391,7 +6470,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{{\mathit{ft}}^\ast} {{\mathit{ft}}^\ast}{}[i] = \mathsf{mut}~{\mathit{zt}} }{ C \vdash \mathsf{struct{.}set}~x~i : (\mathsf{ref}~\mathsf{null}~x)~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}struct.set}]} +} \, {[\textsc{\scriptsize T{-}instr{-}struct.set}]} \qquad \end{array} $$ @@ -6404,7 +6483,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) }{ C \vdash \mathsf{array{.}new}~x : {\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}array.new}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.new}]} \qquad \end{array} $$ @@ -6417,7 +6496,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) {{\mathrm{default}}}_{{\mathrm{unpack}}({\mathit{zt}})} \neq \epsilon }{ C \vdash \mathsf{array{.}new\_default}~x : \mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}array.new\_default}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.new\_default}]} \qquad \end{array} $$ @@ -6428,7 +6507,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) }{ C \vdash \mathsf{array{.}new\_fixed}~x~n : {{\mathrm{unpack}}({\mathit{zt}})^{n}} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}array.new\_fixed}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.new\_fixed}]} \qquad \end{array} $$ @@ -6441,7 +6520,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{rt}}) C \vdash C{.}\mathsf{elems}{}[y] \leq {\mathit{rt}} }{ C \vdash \mathsf{array{.}new\_elem}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}array.new\_elem}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.new\_elem}]} \qquad \end{array} $$ @@ -6456,7 +6535,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) C{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ C \vdash \mathsf{array{.}new\_data}~x~y : \mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow (\mathsf{ref}~x) -} \, {[\textsc{\scriptsize T{-}array.new\_data}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.new\_data}]} \qquad \end{array} $$ @@ -6466,10 +6545,10 @@ $$ \frac{ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}}) \qquad -{{\mathit{sx}}^?} = \epsilon \Leftrightarrow {\mathit{zt}} = {\mathrm{unpack}}({\mathit{zt}}) +{{\mathit{sx}}^?} \neq \epsilon \Leftrightarrow {\mathit{zt}} \neq {\mathrm{unpack}}({\mathit{zt}}) }{ C \vdash {\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}} \rightarrow {\mathrm{unpack}}({\mathit{zt}}) -} \, {[\textsc{\scriptsize T{-}array.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.get}]} \qquad \end{array} $$ @@ -6480,7 +6559,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) }{ C \vdash \mathsf{array{.}set}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~{\mathrm{unpack}}({\mathit{zt}}) \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}array.set}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.set}]} \qquad \end{array} $$ @@ -6490,7 +6569,7 @@ $$ \frac{ }{ C \vdash \mathsf{array{.}len} : (\mathsf{ref}~\mathsf{null}~\mathsf{array}) \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}array.len}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.len}]} \qquad \end{array} $$ @@ -6501,7 +6580,7 @@ $$ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) }{ C \vdash \mathsf{array{.}fill}~x : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~{\mathrm{unpack}}({\mathit{zt}})~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}array.fill}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.fill}]} \qquad \end{array} $$ @@ -6516,7 +6595,7 @@ C{.}\mathsf{types}{}[x_2] \approx \mathsf{array}~({\mathsf{mut}^?}~{\mathit{zt}} C \vdash {\mathit{zt}}_2 \leq {\mathit{zt}}_1 }{ C \vdash \mathsf{array{.}copy}~x_1~x_2 : (\mathsf{ref}~\mathsf{null}~x_1)~\mathsf{i{\scriptstyle 32}}~(\mathsf{ref}~\mathsf{null}~x_2)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}array.copy}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.copy}]} \qquad \end{array} $$ @@ -6529,7 +6608,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) C \vdash C{.}\mathsf{elems}{}[y] \leq {\mathit{zt}} }{ C \vdash \mathsf{array{.}init\_elem}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}array.init\_elem}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.init\_elem}]} \qquad \end{array} $$ @@ -6544,7 +6623,7 @@ C{.}\mathsf{types}{}[x] \approx \mathsf{array}~(\mathsf{mut}~{\mathit{zt}}) C{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ C \vdash \mathsf{array{.}init\_data}~x~y : (\mathsf{ref}~\mathsf{null}~x)~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}array.init\_data}]} +} \, {[\textsc{\scriptsize T{-}instr{-}array.init\_data}]} \qquad \end{array} $$ @@ -6557,7 +6636,7 @@ $$ {{\mathsf{null}}_1^?} = {{\mathsf{null}}_2^?} }{ C \vdash \mathsf{extern{.}convert\_any} : (\mathsf{ref}~{{\mathsf{null}}_1^?}~\mathsf{any}) \rightarrow (\mathsf{ref}~{{\mathsf{null}}_2^?}~\mathsf{extern}) -} \, {[\textsc{\scriptsize T{-}extern.convert\_any}]} +} \, {[\textsc{\scriptsize T{-}instr{-}extern.convert\_any}]} \qquad \end{array} $$ @@ -6568,7 +6647,7 @@ $$ {{\mathsf{null}}_1^?} = {{\mathsf{null}}_2^?} }{ C \vdash \mathsf{any{.}convert\_extern} : (\mathsf{ref}~{{\mathsf{null}}_1^?}~\mathsf{extern}) \rightarrow (\mathsf{ref}~{{\mathsf{null}}_2^?}~\mathsf{any}) -} \, {[\textsc{\scriptsize T{-}any.convert\_extern}]} +} \, {[\textsc{\scriptsize T{-}instr{-}any.convert\_extern}]} \qquad \end{array} $$ @@ -6581,7 +6660,7 @@ $$ C{.}\mathsf{locals}{}[x] = \mathsf{set}~t }{ C \vdash \mathsf{local{.}get}~x : \epsilon \rightarrow t -} \, {[\textsc{\scriptsize T{-}local.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}local.get}]} \qquad \end{array} $$ @@ -6592,7 +6671,7 @@ $$ C{.}\mathsf{locals}{}[x] = {\mathit{init}}~t }{ C \vdash \mathsf{local{.}set}~x : t \rightarrow_{x} \epsilon -} \, {[\textsc{\scriptsize T{-}local.set}]} +} \, {[\textsc{\scriptsize T{-}instr{-}local.set}]} \qquad \end{array} $$ @@ -6603,7 +6682,7 @@ $$ C{.}\mathsf{locals}{}[x] = {\mathit{init}}~t }{ C \vdash \mathsf{local{.}tee}~x : t \rightarrow_{x} t -} \, {[\textsc{\scriptsize T{-}local.tee}]} +} \, {[\textsc{\scriptsize T{-}instr{-}local.tee}]} \qquad \end{array} $$ @@ -6616,7 +6695,7 @@ $$ C{.}\mathsf{globals}{}[x] = {\mathsf{mut}^?}~t }{ C \vdash \mathsf{global{.}get}~x : \epsilon \rightarrow t -} \, {[\textsc{\scriptsize T{-}global.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}global.get}]} \qquad \end{array} $$ @@ -6627,7 +6706,7 @@ $$ C{.}\mathsf{globals}{}[x] = \mathsf{mut}~t }{ C \vdash \mathsf{global{.}set}~x : t \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}global.set}]} +} \, {[\textsc{\scriptsize T{-}instr{-}global.set}]} \qquad \end{array} $$ @@ -6640,7 +6719,7 @@ $$ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ C \vdash \mathsf{table{.}get}~x : {\mathit{at}} \rightarrow {\mathit{rt}} -} \, {[\textsc{\scriptsize T{-}table.get}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.get}]} \qquad \end{array} $$ @@ -6651,7 +6730,7 @@ $$ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ C \vdash \mathsf{table{.}set}~x : {\mathit{at}}~{\mathit{rt}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}table.set}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.set}]} \qquad \end{array} $$ @@ -6662,7 +6741,7 @@ $$ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ C \vdash \mathsf{table{.}size}~x : \epsilon \rightarrow {\mathit{at}} -} \, {[\textsc{\scriptsize T{-}table.size}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.size}]} \qquad \end{array} $$ @@ -6672,8 +6751,8 @@ $$ \frac{ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ -C \vdash \mathsf{table{.}grow}~x : {\mathit{rt}}~{\mathit{at}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}table.grow}]} +C \vdash \mathsf{table{.}grow}~x : {\mathit{rt}}~{\mathit{at}} \rightarrow {\mathit{at}} +} \, {[\textsc{\scriptsize T{-}instr{-}table.grow}]} \qquad \end{array} $$ @@ -6684,7 +6763,7 @@ $$ C{.}\mathsf{tables}{}[x] = {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} }{ C \vdash \mathsf{table{.}fill}~x : {\mathit{at}}~{\mathit{rt}}~{\mathit{at}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}table.fill}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.fill}]} \qquad \end{array} $$ @@ -6699,7 +6778,7 @@ C{.}\mathsf{tables}{}[x_2] = {\mathit{at}}_2~{\mathit{lim}}_2~{\mathit{rt}}_2 C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 }{ C \vdash \mathsf{table{.}copy}~x_1~x_2 : {\mathit{at}}_1~{\mathit{at}}_2~{\mathrm{min}}({\mathit{at}}_1, {\mathit{at}}_2) \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}table.copy}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.copy}]} \qquad \end{array} $$ @@ -6714,7 +6793,7 @@ C{.}\mathsf{elems}{}[y] = {\mathit{rt}}_2 C \vdash {\mathit{rt}}_2 \leq {\mathit{rt}}_1 }{ C \vdash \mathsf{table{.}init}~x~y : {\mathit{at}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}table.init}]} +} \, {[\textsc{\scriptsize T{-}instr{-}table.init}]} \qquad \end{array} $$ @@ -6725,7 +6804,24 @@ $$ C{.}\mathsf{elems}{}[x] = {\mathit{rt}} }{ C \vdash \mathsf{elem{.}drop}~x : \epsilon \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}elem.drop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}elem.drop}]} +\qquad +\end{array} +$$ + +\vspace{1ex} + +$\boxed{{\vdash}\, {\mathit{memarg}} : {\mathit{addrtype}} \rightarrow N}$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +{2^{n}} \leq N / 8 + \qquad +m < {2^{{|{\mathit{at}}|}}} +}{ +{\vdash}\, \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \} : {\mathit{at}} \rightarrow N +} \, {[\textsc{\scriptsize T{-}memarg}]} \qquad \end{array} $$ @@ -6738,7 +6834,7 @@ $$ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} }{ C \vdash \mathsf{memory{.}size}~x : \epsilon \rightarrow {\mathit{at}} -} \, {[\textsc{\scriptsize T{-}memory.size}]} +} \, {[\textsc{\scriptsize T{-}instr{-}memory.size}]} \qquad \end{array} $$ @@ -6749,7 +6845,7 @@ $$ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} }{ C \vdash \mathsf{memory{.}grow}~x : {\mathit{at}} \rightarrow {\mathit{at}} -} \, {[\textsc{\scriptsize T{-}memory.grow}]} +} \, {[\textsc{\scriptsize T{-}instr{-}memory.grow}]} \qquad \end{array} $$ @@ -6760,7 +6856,7 @@ $$ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} }{ C \vdash \mathsf{memory{.}fill}~x : {\mathit{at}}~\mathsf{i{\scriptstyle 32}}~{\mathit{at}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}memory.fill}]} +} \, {[\textsc{\scriptsize T{-}instr{-}memory.fill}]} \qquad \end{array} $$ @@ -6773,7 +6869,7 @@ C{.}\mathsf{mems}{}[x_1] = {\mathit{at}}_1~{\mathit{lim}}_1~\mathsf{page} C{.}\mathsf{mems}{}[x_2] = {\mathit{at}}_2~{\mathit{lim}}_2~\mathsf{page} }{ C \vdash \mathsf{memory{.}copy}~x_1~x_2 : {\mathit{at}}_1~{\mathit{at}}_2~{\mathrm{min}}({\mathit{at}}_1, {\mathit{at}}_2) \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}memory.copy}]} +} \, {[\textsc{\scriptsize T{-}instr{-}memory.copy}]} \qquad \end{array} $$ @@ -6786,7 +6882,7 @@ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} C{.}\mathsf{datas}{}[y] = \mathsf{ok} }{ C \vdash \mathsf{memory{.}init}~x~y : {\mathit{at}}~\mathsf{i{\scriptstyle 32}}~\mathsf{i{\scriptstyle 32}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}memory.init}]} +} \, {[\textsc{\scriptsize T{-}instr{-}memory.init}]} \qquad \end{array} $$ @@ -6797,7 +6893,7 @@ $$ C{.}\mathsf{datas}{}[x] = \mathsf{ok} }{ C \vdash \mathsf{data{.}drop}~x : \epsilon \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}data.drop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}data.drop}]} \qquad \end{array} $$ @@ -6807,10 +6903,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|{\mathit{nt}}|} / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow {|{\mathit{nt}}|} }{ C \vdash {\mathit{nt}}{.}\mathsf{load}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow {\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}load{-}val}]} +} \, {[\textsc{\scriptsize T{-}instr{-}load{-}val}]} \qquad \end{array} $$ @@ -6820,10 +6916,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq M / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow K }{ -C \vdash {{\mathsf{i}}{N}{.}\mathsf{load}}{{M}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow {\mathsf{i}}{N} -} \, {[\textsc{\scriptsize T{-}load{-}pack}]} +C \vdash {{\mathsf{i}}{N}{.}\mathsf{load}}{{K}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow {\mathsf{i}}{N} +} \, {[\textsc{\scriptsize T{-}instr{-}load{-}pack}]} \qquad \end{array} $$ @@ -6833,10 +6929,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|{\mathit{nt}}|} / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow {|{\mathit{nt}}|} }{ C \vdash {\mathit{nt}}{.}\mathsf{store}~x~{\mathit{memarg}} : {\mathit{at}}~{\mathit{nt}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}store{-}val}]} +} \, {[\textsc{\scriptsize T{-}instr{-}store{-}val}]} \qquad \end{array} $$ @@ -6846,10 +6942,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq M / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow K }{ -C \vdash {{\mathsf{i}}{N}{.}\mathsf{store}}{M}~x~{\mathit{memarg}} : {\mathit{at}}~{\mathsf{i}}{N} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}store{-}pack}]} +C \vdash {{\mathsf{i}}{N}{.}\mathsf{store}}{K}~x~{\mathit{memarg}} : {\mathit{at}}~{\mathsf{i}}{N} \rightarrow \epsilon +} \, {[\textsc{\scriptsize T{-}instr{-}store{-}pack}]} \qquad \end{array} $$ @@ -6859,10 +6955,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|\mathsf{v{\scriptstyle 128}}|} / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow {|\mathsf{v{\scriptstyle 128}}|} }{ C \vdash \mathsf{v{\scriptstyle 128}}{.}\mathsf{load}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vload{-}val}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vload{-}val}]} \qquad \end{array} $$ @@ -6872,10 +6968,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq M / 8 \cdot N +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow N \cdot M }{ -C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{M}{\mathsf{x}}{N}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vload{-}pack}]} +C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{N}{\mathsf{x}}{M}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow \mathsf{v{\scriptstyle 128}} +} \, {[\textsc{\scriptsize T{-}instr{-}vload{-}pack}]} \qquad \end{array} $$ @@ -6885,10 +6981,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq N / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow N }{ C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{N}{\mathsf{\_}}{\mathsf{splat}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vload{-}splat}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vload{-}splat}]} \qquad \end{array} $$ @@ -6898,10 +6994,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq N / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow N }{ C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{N}{\mathsf{\_}}{\mathsf{zero}}}~x~{\mathit{memarg}} : {\mathit{at}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vload{-}zero}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vload{-}zero}]} \qquad \end{array} $$ @@ -6911,12 +7007,12 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq N / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow N \qquad i < 128 / N }{ C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~i : {\mathit{at}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vload\_lane}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vload\_lane}]} \qquad \end{array} $$ @@ -6926,10 +7022,10 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq {|\mathsf{v{\scriptstyle 128}}|} / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow {|\mathsf{v{\scriptstyle 128}}|} }{ C \vdash \mathsf{v{\scriptstyle 128}}{.}\mathsf{store}~x~{\mathit{memarg}} : {\mathit{at}}~\mathsf{v{\scriptstyle 128}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}vstore}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vstore}]} \qquad \end{array} $$ @@ -6939,12 +7035,12 @@ $$ \frac{ C{.}\mathsf{mems}{}[x] = {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \qquad -{2^{{\mathit{memarg}}{.}\mathsf{align}}} \leq N / 8 +{\vdash}\, {\mathit{memarg}} : {\mathit{at}} \rightarrow N \qquad i < 128 / N }{ C \vdash {\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{memarg}}~i : {\mathit{at}}~\mathsf{v{\scriptstyle 128}} \rightarrow \epsilon -} \, {[\textsc{\scriptsize T{-}vstore\_lane}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vstore\_lane}]} \qquad \end{array} $$ @@ -6956,7 +7052,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}}{.}\mathsf{const}~c_{\mathit{nt}} : \epsilon \rightarrow {\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}const}]} +} \, {[\textsc{\scriptsize T{-}instr{-}const}]} \qquad \end{array} $$ @@ -6966,7 +7062,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{unop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow {\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}unop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}unop}]} \qquad \end{array} $$ @@ -6976,7 +7072,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{binop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}binop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}binop}]} \qquad \end{array} $$ @@ -6986,7 +7082,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{testop}}_{\mathit{nt}} : {\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}testop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}testop}]} \qquad \end{array} $$ @@ -6996,7 +7092,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{relop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}relop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}relop}]} \qquad \end{array} $$ @@ -7006,7 +7102,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2} : {\mathit{nt}}_2 \rightarrow {\mathit{nt}}_1 -} \, {[\textsc{\scriptsize T{-}cvtop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}cvtop}]} \qquad \end{array} $$ @@ -7016,7 +7112,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}wideop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}wideop}]} \qquad \end{array} $$ @@ -7026,7 +7122,7 @@ $$ \frac{ }{ C \vdash {\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}extwideop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}extwideop}]} \qquad \end{array} $$ @@ -7038,7 +7134,7 @@ $$ \frac{ }{ C \vdash \mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c : \epsilon \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vconst}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vconst}]} \qquad \end{array} $$ @@ -7048,7 +7144,7 @@ $$ \frac{ }{ C \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vvunop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vvunop}]} \qquad \end{array} $$ @@ -7058,7 +7154,7 @@ $$ \frac{ }{ C \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvbinop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vvbinop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vvbinop}]} \qquad \end{array} $$ @@ -7068,7 +7164,7 @@ $$ \frac{ }{ C \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvternop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vvternop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vvternop}]} \qquad \end{array} $$ @@ -7078,7 +7174,7 @@ $$ \frac{ }{ C \vdash \mathsf{v{\scriptstyle 128}} {.} {\mathit{vvtestop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}vvtestop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vvtestop}]} \qquad \end{array} $$ @@ -7088,7 +7184,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vunop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vunop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vunop}]} \qquad \end{array} $$ @@ -7098,7 +7194,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vbinop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vbinop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vbinop}]} \qquad \end{array} $$ @@ -7108,7 +7204,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vternop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vternop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vternop}]} \qquad \end{array} $$ @@ -7118,7 +7214,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vtestop}} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}vtestop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vtestop}]} \qquad \end{array} $$ @@ -7128,7 +7224,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vrelop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vrelop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vrelop}]} \qquad \end{array} $$ @@ -7138,7 +7234,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vshiftop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{i{\scriptstyle 32}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vshiftop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vshiftop}]} \qquad \end{array} $$ @@ -7148,7 +7244,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}{.}\mathsf{bitmask} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{i{\scriptstyle 32}} -} \, {[\textsc{\scriptsize T{-}vbitmask}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vbitmask}]} \qquad \end{array} $$ @@ -7158,7 +7254,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}} {.} {\mathit{vswizzlop}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vswizzlop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vswizzlop}]} \qquad \end{array} $$ @@ -7169,7 +7265,7 @@ $$ (i < 2 \cdot {\mathrm{dim}}({\mathit{sh}}))^\ast }{ C \vdash {\mathit{sh}}{.}\mathsf{shuffle}~{i^\ast} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vshuffle}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vshuffle}]} \qquad \end{array} $$ @@ -7179,7 +7275,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}{.}\mathsf{splat} : {\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vsplat}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vsplat}]} \qquad \end{array} $$ @@ -7190,7 +7286,7 @@ $$ i < {\mathrm{dim}}({\mathit{sh}}) }{ C \vdash {{\mathit{sh}}{.}\mathsf{extract\_lane}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~i : \mathsf{v{\scriptstyle 128}} \rightarrow {\mathrm{unpack}}({\mathit{sh}}) -} \, {[\textsc{\scriptsize T{-}vextract\_lane}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vextract\_lane}]} \qquad \end{array} $$ @@ -7201,7 +7297,7 @@ $$ i < {\mathrm{dim}}({\mathit{sh}}) }{ C \vdash {\mathit{sh}}{.}\mathsf{replace\_lane}~i : \mathsf{v{\scriptstyle 128}}~{\mathrm{unpack}}({\mathit{sh}}) \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vreplace\_lane}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vreplace\_lane}]} \qquad \end{array} $$ @@ -7211,7 +7307,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}_1 {.} {{\mathit{vextunop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vextunop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vextunop}]} \qquad \end{array} $$ @@ -7221,7 +7317,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}_1 {.} {{\mathit{vextbinop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vextbinop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vextbinop}]} \qquad \end{array} $$ @@ -7231,7 +7327,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}_1 {.} {{\mathit{vextternop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vextternop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vextternop}]} \qquad \end{array} $$ @@ -7241,7 +7337,7 @@ $$ \frac{ }{ C \vdash {{\mathit{sh}}_1{.}\mathsf{narrow}}{\mathsf{\_}}{{\mathit{sh}}_2}{\mathsf{\_}}{{\mathit{sx}}} : \mathsf{v{\scriptstyle 128}}~\mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vnarrow}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vnarrow}]} \qquad \end{array} $$ @@ -7251,7 +7347,7 @@ $$ \frac{ }{ C \vdash {\mathit{sh}}_1 {.} {{\mathit{vcvtop}}}{\mathsf{\_}}{{\mathit{sh}}_2} : \mathsf{v{\scriptstyle 128}} \rightarrow \mathsf{v{\scriptstyle 128}} -} \, {[\textsc{\scriptsize T{-}vcvtop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}vcvtop}]} \qquad \end{array} $$ @@ -7271,13 +7367,24 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {\mathit{instr}}_1 : {t_1^\ast} \rightarrow_{{x_1^\ast}} {t_2^\ast} +C \vdash {\mathit{instr}} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} +}{ +C \vdash {\mathit{instr}} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} +} \, {[\textsc{\scriptsize T{-}instr*{-}instr}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +C \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}} {t_2^\ast} \qquad (C{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast \qquad C{}[{.}\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast} \rightarrow_{{x_2^\ast}} {t_3^\ast} }{ -C \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}~{x_2^\ast}} {t_3^\ast} +C \vdash {{\mathit{instr}}_1^\ast}~{{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}~{x_2^\ast}} {t_3^\ast} } \, {[\textsc{\scriptsize T{-}instr*{-}seq}]} \qquad \end{array} @@ -7316,7 +7423,7 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -C \vdash {{\mathit{instr}}^\ast} : \epsilon \rightarrow_{\epsilon} {t^\ast} +C \vdash {{\mathit{instr}}^\ast} : \epsilon \rightarrow {t^\ast} }{ C \vdash {{\mathit{instr}}^\ast} : {t^\ast} } \, {[\textsc{\scriptsize T{-}expr}]} @@ -7600,6 +7707,8 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ +C \vdash t : \mathsf{ok} + \qquad {{\mathrm{default}}}_{t} \neq \epsilon }{ C \vdash \mathsf{local}~t : \mathsf{set}~t @@ -7611,6 +7720,8 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ +C \vdash t : \mathsf{ok} + \qquad {{\mathrm{default}}}_{t} = \epsilon }{ C \vdash \mathsf{local}~t : \mathsf{unset}~t @@ -7828,13 +7939,18 @@ $\boxed{{\mathit{context}} \vdash {{\mathit{global}}^\ast} : {{\mathit{globaltyp $$ \begin{array}[t]{@{}lrrl@{}l@{}} -& {\mathit{nonfuncs}} & ::= & {{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast} \\ +& {\mathit{nonfuncs}} & ::= & {{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{export}}^\ast} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{funcidx}}({{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast}) & = & {\mathrm{funcidx}}(\mathsf{module}~\epsilon~\epsilon~\epsilon~{{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~\epsilon~\epsilon~{{\mathit{elem}}^\ast}~\epsilon~\epsilon) \\ +{\mathrm{funcidx}}({{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{export}}^\ast}) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{\mathrm{funcidx}}(\mathsf{module}~\epsilon~\epsilon~\epsilon~{{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~\epsilon~\epsilon~{{\mathit{elem}}^\ast}~\epsilon~{{\mathit{export}}^\ast}) \\ +\end{array} +} \\ \end{array} $$ @@ -7870,7 +7986,7 @@ C = {C'} \oplus \{ \mathsf{tags}~{{\mathit{jt}}_{\mathsf{i}}^\ast}~{{\mathit{jt} \\ {C'} = \{ \mathsf{types}~{{\mathit{dt}'}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{gt}}_{\mathsf{i}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{dt}}_{\mathsf{i}}^\ast}~{{\mathit{dt}}^\ast},\;\allowbreak \mathsf{refs}~{x^\ast} \} \qquad -{x^\ast} = {\mathrm{funcidx}}({{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast}) +{x^\ast} = {\mathrm{funcidx}}({{\mathit{global}}^\ast}~{{\mathit{mem}}^\ast}~{{\mathit{table}}^\ast}~{{\mathit{elem}}^\ast}~{{\mathit{export}}^\ast}) \\ {{\mathit{jt}}_{\mathsf{i}}^\ast} = {\mathrm{tags}}({{\mathit{xt}}_{\mathsf{i}}^\ast}) \qquad @@ -8042,8 +8158,8 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{{{\mathrm{iextend}}}_{N, M}^{\mathsf{u}}}}{(i)} & = & i \mathbin{\mathrm{mod}} {2^{M}} \\ -{{{{\mathrm{iextend}}}_{N, M}^{\mathsf{s}}}}{(i)} & = & {{{{\mathrm{signed}}}_{N}^{{-1}}}}{({{\mathrm{signed}}}_{M}(i \mathbin{\mathrm{mod}} {2^{M}}))} \\ +{{{{\mathrm{iextend}}}_{N, K}^{\mathsf{u}}}}{(i)} & = & i \mathbin{\mathrm{mod}} {2^{K}} \\ +{{{{\mathrm{iextend}}}_{N, K}^{\mathsf{s}}}}{(i)} & = & {{{{\mathrm{signed}}}_{N}^{{-1}}}}{({{\mathrm{signed}}}_{K}(i \mathbin{\mathrm{mod}} {2^{K}}))} \\ \end{array} $$ @@ -8221,7 +8337,7 @@ $$ {\mathsf{clz}}{{}_{{\mathsf{i}}{N}}(i)} & = & {{\mathrm{iclz}}}_{N}(i) \\ {\mathsf{ctz}}{{}_{{\mathsf{i}}{N}}(i)} & = & {{\mathrm{ictz}}}_{N}(i) \\ {\mathsf{popcnt}}{{}_{{\mathsf{i}}{N}}(i)} & = & {{\mathrm{ipopcnt}}}_{N}(i) \\ -{{\mathsf{extend}}{M}{\mathsf{\_}}{\mathsf{s}}}{{}_{{\mathsf{i}}{N}}(i)} & = & {{{{\mathrm{iextend}}}_{N, M}^{\mathsf{s}}}}{(i)} \\ +{{\mathsf{extend}}{{N'}}{\mathsf{\_}}{\mathsf{s}}}{{}_{{\mathsf{i}}{N}}(i)} & = & {{{{\mathrm{iextend}}}_{N, {N'}}^{\mathsf{s}}}}{(i)} \\ {\mathsf{abs}}{{}_{{\mathsf{f}}{N}}(f)} & = & {{\mathrm{fabs}}}_{N}(f) \\ {\mathsf{neg}}{{}_{{\mathsf{f}}{N}}(f)} & = & {{\mathrm{fneg}}}_{N}(f) \\ {\mathsf{sqrt}}{{}_{{\mathsf{f}}{N}}(f)} & = & {{\mathrm{fsqrt}}}_{N}(f) \\ @@ -8391,9 +8507,9 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \epsilon \\ -{\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}~{\mathit{sx}}}) & = & \epsilon \\ -{\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}) & = & {{\mathit{zero}}^?} \\ -{\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}) & = & {{\mathit{zero}}^?} \\ +{\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \epsilon \\ +{\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}) & = & {{\mathit{zero}}^?} \\ +{\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}) & = & {{\mathit{zero}}^?} \\ {\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{demote}}{\mathsf{\_}}{\mathsf{zero}}) & = & {\mathit{zero}} \\ {\mathrm{zeroop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{promote}}{\mathsf{\_}}{\mathsf{low}}) & = & \epsilon \\ \end{array} @@ -8402,9 +8518,9 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{halfop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}) & = & {\mathit{half}} \\ -{\mathrm{halfop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}~{\mathit{sx}}}) & = & {{\mathit{half}}^?} \\ -{\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}) & = & \epsilon \\ -{\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}) & = & \epsilon \\ +{\mathrm{halfop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}}{\mathsf{\_}}{{\mathit{sx}}}) & = & {{\mathit{half}}^?} \\ +{\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}) & = & \epsilon \\ +{\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}) & = & \epsilon \\ {\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{demote}}{\mathsf{\_}}{\mathsf{zero}}) & = & \epsilon \\ {\mathrm{halfop}}({{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{promote}}{\mathsf{\_}}{\mathsf{low}}) & = & \mathsf{low} \\ \end{array} @@ -8532,28 +8648,6 @@ $$ \vspace{1ex} -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{ivtestop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}({\mathrm{f}}, v_1) & = & {\Pi}\, {c^\ast} & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ {c_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}(v_1) \\ -{\land}~ {c^\ast} = {{{\mathrm{f}}}_{N}(c_1)^\ast} \\ -\end{array} \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{fvtestop}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}}({\mathrm{f}}, v_1) & = & {\Pi}\, {c^\ast} & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ {c_1^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{f}}{N}}{\mathsf{x}}{M}}(v_1) \\ -{\land}~ {c^\ast} = {{{\mathrm{f}}}_{N}(c_1)^\ast} \\ -\end{array} \\ -\end{array} -$$ - -\vspace{1ex} - $$ \begin{array}[t]{@{}lcl@{}l@{}} {{\mathrm{ivrelop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}({\mathrm{f}}, v_1, v_2) & = & {{{{\mathrm{lanes}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}^{{-1}}}}{({c^\ast})} & \quad @@ -8721,12 +8815,6 @@ $$ \end{array} $$ -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{\mathsf{all\_true}}{{}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}(v)} & = & {{\mathrm{ivtestop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}({\mathrm{inez}}, v) \\ -\end{array} -$$ - $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathsf{eq}}{{}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}(v_1, v_2)} & = & {{\mathrm{ivrelop}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}({\mathrm{ieq}}, v_1, v_2) \\ @@ -8773,9 +8861,9 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {{\mathrm{lcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}, c_1) & = & c & \quad \mbox{if}~ c = {{{{\mathrm{extend}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ -{{\mathrm{lcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}~{\mathit{sx}}}, c_1) & = & c & \quad \mbox{if}~ c = {{{{\mathrm{convert}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ -{{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}, c_1) & = & {c^?} & \quad \mbox{if}~ {c^?} = {{{{\mathrm{trunc\_sat}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ -{{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}~{{\mathit{zero}}^?}}, c_1) & = & {c^?} & \quad \mbox{if}~ {c^?} = {{{{\mathrm{relaxed\_trunc}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ +{{\mathrm{lcvtop}}}_{{{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{convert}}{\mathsf{\_}}{{{\mathit{half}}^?}}{\mathsf{\_}}{{\mathit{sx}}}, c_1) & = & c & \quad \mbox{if}~ c = {{{{\mathrm{convert}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ +{{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{trunc\_sat}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}, c_1) & = & {c^?} & \quad \mbox{if}~ {c^?} = {{{{\mathrm{trunc\_sat}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ +{{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{relaxed\_trunc}}{\mathsf{\_}}{{\mathit{sx}}}{\mathsf{\_}}{{{\mathit{zero}}^?}}, c_1) & = & {c^?} & \quad \mbox{if}~ {c^?} = {{{{\mathrm{relaxed\_trunc}}}_{N_1, N_2}^{{\mathit{sx}}}}}{(c_1)} \\ {{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{demote}}{\mathsf{\_}}{\mathsf{zero}}, c_1) & = & {c^\ast} & \quad \mbox{if}~ {c^\ast} = {{\mathrm{demote}}}_{N_1, N_2}(c_1) \\ {{\mathrm{lcvtop}}}_{{{{\mathsf{f}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{f}}{N}}_2}{\mathsf{x}}{M_2}}({\mathsf{promote}}{\mathsf{\_}}{\mathsf{low}}, c_1) & = & {c^\ast} & \quad \mbox{if}~ {c^\ast} = {{\mathrm{promote}}}_{N_1, N_2}(c_1) \\ \end{array} @@ -8941,15 +9029,14 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(number value)} & {\mathit{num}} & ::= & {\mathit{numtype}}{.}\mathsf{const}~{{\mathit{num}}}_{{\mathit{numtype}}} \\ \mbox{(vector value)} & {\mathit{vec}} & ::= & {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ -\mbox{(address value)} & {\mathit{addrref}} & ::= & \mathsf{ref{.}i{\scriptstyle 31}}~{\mathit{u{\kern-0.1em\scriptstyle 31}}} \\ +\mbox{(reference value)} & {\mathit{ref}} & ::= & \mathsf{ref{.}i{\scriptstyle 31}}~{\mathit{u{\kern-0.1em\scriptstyle 31}}} \\ +& & | & \mathsf{ref{.}null} \\ & & | & \mathsf{ref{.}struct}~{\mathit{structaddr}} \\ & & | & \mathsf{ref{.}array}~{\mathit{arrayaddr}} \\ & & | & \mathsf{ref{.}func}~{\mathit{funcaddr}} \\ & & | & \mathsf{ref{.}exn}~{\mathit{exnaddr}} \\ & & | & \mathsf{ref{.}host}~{\mathit{hostaddr}} \\ -& & | & \mathsf{ref{.}extern}~{\mathit{addrref}} \\ -\mbox{(reference value)} & {\mathit{ref}} & ::= & {\mathit{addrref}} \\ -& & | & \mathsf{ref{.}null}~{\mathit{heaptype}} \\ +& & | & \mathsf{ref{.}extern}~{\mathit{ref}} \\ \mbox{(value)} & {\mathit{val}} & ::= & {\mathit{num}} ~~|~~ {\mathit{vec}} ~~|~~ {\mathit{ref}} \\ \mbox{(result)} & {\mathit{result}} & ::= & {{\mathit{val}}^\ast} ~~|~~ ( \mathsf{ref{.}exn\_addr}~{\mathit{exnaddr}} )~\mathsf{throw\_ref} ~~|~~ \mathsf{trap} \\ \end{array} @@ -8959,7 +9046,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} -\mbox{(host function)} & {\mathit{hostfunc}} & ::= & \ldots \\ +\mbox{(host function)} & {\mathit{hostfunc}} & ::= & \mathbb{T} \\ & {\mathit{code}} & ::= & {\mathit{func}} ~~|~~ {\mathit{hostfunc}} \\ \mbox{(tag instance)} & {\mathit{taginst}} & ::= & \{ \begin{array}[t]{@{}l@{}l@{}} \mathsf{type}~{\mathit{tagtype}} \} \\ @@ -9051,7 +9138,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}} \mbox{(instruction)} & {\mathit{instr}} & ::= & \dots \\ -& & | & {\mathit{addrref}} \\ +& & | & {\mathit{ref}} \\ & & | & {{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}^\ast} \}}~{{\mathit{instr}}^\ast} \\ & & | & {{\mathsf{frame}}_{n}}{\{ {\mathit{frame}} \}}~{{\mathit{instr}}^\ast} \\ & & | & {{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}}^\ast} \\ @@ -9152,7 +9239,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{tags} & = & f{.}\mathsf{module}{.}\mathsf{tags} \\ +(s ; f){.}\mathsf{module}{.}\mathsf{tags} & = & f{.}\mathsf{module}{.}\mathsf{tags} \\ \end{array} $$ @@ -9226,55 +9313,67 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{types}{}[x] & = & f{.}\mathsf{module}{.}\mathsf{types}{}[x] \\ +s & = & z{.}\mathsf{store} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +f & = & z{.}\mathsf{frame} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +z{.}\mathsf{types}{}[x] & = & f{.}\mathsf{module}{.}\mathsf{types}{}[x] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{tags}{}[x] & = & s{.}\mathsf{tags}{}[f{.}\mathsf{module}{.}\mathsf{tags}{}[x]] \\ +z{.}\mathsf{tags}{}[x] & = & s{.}\mathsf{tags}{}[f{.}\mathsf{module}{.}\mathsf{tags}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{globals}{}[x] & = & s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]] \\ +z{.}\mathsf{globals}{}[x] & = & s{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{mems}{}[x] & = & s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] \\ +z{.}\mathsf{mems}{}[x] & = & s{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ +z{.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ +z{.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{datas}{}[x] & = & s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]] \\ +z{.}\mathsf{datas}{}[x] & = & s{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{elems}{}[x] & = & s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]] \\ +z{.}\mathsf{elems}{}[x] & = & s{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){.}\mathsf{locals}{}[x] & = & f{.}\mathsf{locals}{}[x] \\ +z{.}\mathsf{locals}{}[x] & = & f{.}\mathsf{locals}{}[x] \\ \end{array} $$ @@ -9282,61 +9381,61 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{locals}{}[x] = v] & = & s ; f{}[{.}\mathsf{locals}{}[x] = v] \\ +z{}[{.}\mathsf{locals}{}[x] = v] & = & s ; f{}[{.}\mathsf{locals}{}[x] = v] \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v] & = & s{}[{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value} = v] ; f \\ +z{}[{.}\mathsf{globals}{}[x]{.}\mathsf{value} = v] & = & s{}[{.}\mathsf{globals}{}[f{.}\mathsf{module}{.}\mathsf{globals}{}[x]]{.}\mathsf{value} = v] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i] = r] ; f \\ +z{}[{.}\mathsf{tables}{}[x]{.}\mathsf{refs}{}[i] = r] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]]{.}\mathsf{refs}{}[i] = r] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] = {\mathit{ti}}] ; f \\ +z{}[{.}\mathsf{tables}{}[x] = {\mathit{ti}}] & = & s{}[{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] = {\mathit{ti}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] ; f \\ +z{}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]]{.}\mathsf{bytes}{}[i : j] = {b^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] = {\mathit{mi}}] ; f \\ +z{}[{.}\mathsf{mems}{}[x] = {\mathit{mi}}] & = & s{}[{.}\mathsf{mems}{}[f{.}\mathsf{module}{.}\mathsf{mems}{}[x]] = {\mathit{mi}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}] & = & s{}[{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]{.}\mathsf{refs} = {r^\ast}] ; f \\ +z{}[{.}\mathsf{elems}{}[x]{.}\mathsf{refs} = {r^\ast}] & = & s{}[{.}\mathsf{elems}{}[f{.}\mathsf{module}{.}\mathsf{elems}{}[x]]{.}\mathsf{refs} = {r^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}] & = & s{}[{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]{.}\mathsf{bytes} = {b^\ast}] ; f \\ +z{}[{.}\mathsf{datas}{}[x]{.}\mathsf{bytes} = {b^\ast}] & = & s{}[{.}\mathsf{datas}{}[f{.}\mathsf{module}{.}\mathsf{datas}{}[x]]{.}\mathsf{bytes} = {b^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ +z{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ +z{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] & = & s{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {\mathit{fv}}] ; f \\ \end{array} $$ @@ -9344,19 +9443,19 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] & = & s{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] ; f \\ +z{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] & = & s{}[{.}\mathsf{structs} \mathrel{{=}{\oplus}} {{\mathit{si}}^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] & = & s{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] ; f \\ +z{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] & = & s{}[{.}\mathsf{arrays} \mathrel{{=}{\oplus}} {{\mathit{ai}}^\ast}] ; f \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -(s ; f){}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] & = & s{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] ; f \\ +z{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] & = & s{}[{.}\mathsf{exns} \mathrel{{=}{\oplus}} {{\mathit{exn}}^\ast}] ; f \\ \end{array} $$ @@ -9370,6 +9469,7 @@ $$ {\land}~ {\mathit{tableinst}'} = \{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~{\mathit{rt}}),\; \mathsf{refs}~{{r'}^\ast}~{r^{n}} \} \\ {\land}~ {i'} = {|{{r'}^\ast}|} + n \\ {\land}~ ({i'} \leq j)^? \\ +{\land}~ {i'} \leq {2^{{|{\mathit{at}}|}}} - 1 \\ \end{array} \\ \end{array} $$ @@ -9382,18 +9482,36 @@ $$ {\land}~ {\mathit{meminst}'} = \{ \mathsf{type}~({\mathit{at}}~{}[ {i'} .. {j^?} ]~\mathsf{page}),\; \mathsf{bytes}~{b^\ast}~{(\mathtt{0x00})^{n \cdot 64 \, {\mathrm{Ki}}}} \} \\ {\land}~ {i'} = {|{b^\ast}|} / (64 \, {\mathrm{Ki}}) + n \\ {\land}~ ({i'} \leq j)^? \\ +{\land}~ {i'} \leq {2^{{|{\mathit{at}}|} - 16}} \\ \end{array} \\ \end{array} $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {\mathit{hostcallresult}} & ::= & ({\mathit{store}}, {\mathit{result}}) \\ +& & | & \mathsf{bot} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathit{val}}^\ast} & = & {{\mathit{val}}^\ast} \\ +( \mathsf{ref{.}exn\_addr}~a )~\mathsf{throw\_ref} & = & (\mathsf{ref{.}exn}~a)~\mathsf{throw\_ref} \\ +\mathsf{trap} & = & \mathsf{trap} \\ +\end{array} +$$ + +\vspace{1ex} + $$ \begin{array}[t]{@{}lcl@{}l@{}} {{\mathrm{default}}}_{{\mathsf{i}}{N}} & = & ({\mathsf{i}}{N}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{{\mathsf{f}}{N}} & = & ({\mathsf{f}}{N}{.}\mathsf{const}~{+0}) \\ {{\mathrm{default}}}_{{\mathsf{v}}{N}} & = & ({\mathsf{v}}{N}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & \mathsf{ref{.}null} \\ {{\mathrm{default}}}_{\mathsf{ref}~{\mathit{ht}}} & = & \epsilon \\ \end{array} $$ @@ -9455,9 +9573,8 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -\{ \} \vdash {\mathit{ht}'} \leq {\mathit{ht}} }{ -s \vdash \mathsf{ref{.}null}~{\mathit{ht}} : (\mathsf{ref}~\mathsf{null}~{\mathit{ht}'}) +s \vdash \mathsf{ref{.}null} : \mathsf{ref}~\mathsf{null}~\mathsf{bot} } \, {[\textsc{\scriptsize Ref\_ok{-}null}]} \qquad \end{array} @@ -9467,7 +9584,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -s \vdash \mathsf{ref{.}i{\scriptstyle 31}}~i : (\mathsf{ref}~\mathsf{i{\scriptstyle 31}}) +s \vdash \mathsf{ref{.}i{\scriptstyle 31}}~i : \mathsf{ref}~\mathsf{i{\scriptstyle 31}} } \, {[\textsc{\scriptsize Ref\_ok{-}i31}]} \qquad \end{array} @@ -9478,7 +9595,7 @@ $$ \frac{ s{.}\mathsf{structs}{}[a]{.}\mathsf{type} = {\mathit{dt}} }{ -s \vdash \mathsf{ref{.}struct}~a : (\mathsf{ref}~{\mathit{dt}}) +s \vdash \mathsf{ref{.}struct}~a : \mathsf{ref}~{\mathit{dt}} } \, {[\textsc{\scriptsize Ref\_ok{-}struct}]} \qquad \end{array} @@ -9489,7 +9606,7 @@ $$ \frac{ s{.}\mathsf{arrays}{}[a]{.}\mathsf{type} = {\mathit{dt}} }{ -s \vdash \mathsf{ref{.}array}~a : (\mathsf{ref}~{\mathit{dt}}) +s \vdash \mathsf{ref{.}array}~a : \mathsf{ref}~{\mathit{dt}} } \, {[\textsc{\scriptsize Ref\_ok{-}array}]} \qquad \end{array} @@ -9500,7 +9617,7 @@ $$ \frac{ s{.}\mathsf{funcs}{}[a]{.}\mathsf{type} = {\mathit{dt}} }{ -s \vdash \mathsf{ref{.}func}~a : (\mathsf{ref}~{\mathit{dt}}) +s \vdash \mathsf{ref{.}func}~a : \mathsf{ref}~{\mathit{dt}} } \, {[\textsc{\scriptsize Ref\_ok{-}func}]} \qquad \end{array} @@ -9511,7 +9628,7 @@ $$ \frac{ s{.}\mathsf{exns}{}[a] = {\mathit{exn}} }{ -s \vdash \mathsf{ref{.}exn}~a : (\mathsf{ref}~\mathsf{exn}) +s \vdash \mathsf{ref{.}exn}~a : \mathsf{ref}~\mathsf{exn} } \, {[\textsc{\scriptsize Ref\_ok{-}exn}]} \qquad \end{array} @@ -9521,7 +9638,7 @@ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ }{ -s \vdash \mathsf{ref{.}host}~a : (\mathsf{ref}~\mathsf{any}) +s \vdash \mathsf{ref{.}host}~a : \mathsf{ref}~\mathsf{any} } \, {[\textsc{\scriptsize Ref\_ok{-}host}]} \qquad \end{array} @@ -9530,9 +9647,11 @@ $$ $$ \begin{array}{@{}c@{}}\displaystyle \frac{ -s \vdash {\mathit{addrref}} : (\mathsf{ref}~\mathsf{any}) +s \vdash {\mathit{ref}} : \mathsf{ref}~\mathsf{any} + \qquad +{\mathit{ref}} \neq \mathsf{ref{.}null} }{ -s \vdash \mathsf{ref{.}extern}~{\mathit{addrref}} : (\mathsf{ref}~\mathsf{extern}) +s \vdash \mathsf{ref{.}extern}~{\mathit{ref}} : \mathsf{ref}~\mathsf{extern} } \, {[\textsc{\scriptsize Ref\_ok{-}extern}]} \qquad \end{array} @@ -9543,6 +9662,8 @@ $$ \frac{ s \vdash {\mathit{ref}} : {\mathit{rt}'} \qquad +\{ \} \vdash {\mathit{rt}} : \mathsf{ok} + \qquad \{ \} \vdash {\mathit{rt}'} \leq {\mathit{rt}} }{ s \vdash {\mathit{ref}} : {\mathit{rt}} @@ -9588,6 +9709,44 @@ $$ \vspace{1ex} +$\boxed{{\mathit{store}} \vdash {\mathit{packval}} : {\mathit{packtype}}}$ + +$\boxed{{\mathit{store}} \vdash {\mathit{fieldval}} : {\mathit{storagetype}}}$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +s \vdash {\mathit{pt}}{.}\mathsf{pack}~c : {\mathit{pt}} +} \, {[\textsc{\scriptsize Packval\_ok}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +s \vdash {\mathit{val}} : t +}{ +s \vdash {\mathit{val}} : t +} \, {[\textsc{\scriptsize Fieldval\_ok{-}val}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +s \vdash {\mathit{packval}} : {\mathit{pt}} +}{ +s \vdash {\mathit{packval}} : {\mathit{pt}} +} \, {[\textsc{\scriptsize Fieldval\_ok{-}packval}]} +\qquad +\end{array} +$$ + +\vspace{1ex} + $\boxed{{\mathit{store}} \vdash {\mathit{externaddr}} : {\mathit{externtype}}}$ $$ @@ -9650,6 +9809,8 @@ $$ \frac{ s \vdash {\mathit{externaddr}} : {\mathit{xt}'} \qquad +\{ \} \vdash {\mathit{xt}} : \mathsf{ok} + \qquad \{ \} \vdash {\mathit{xt}'} \leq {\mathit{xt}} }{ s \vdash {\mathit{externaddr}} : {\mathit{xt}} @@ -9660,31 +9821,31 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{inst}}}_{{\mathit{moduleinst}}}(t) & = & {t}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\ +{{\mathrm{inst}}}_{{\mathit{moduleinst}}}(t) & = & {t}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{rt}}) & = & {{\mathit{rt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\ +{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{rt}}) & = & {{\mathit{rt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{gt}}) & = & {{\mathit{gt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\ +{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{gt}}) & = & {{\mathit{gt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{mt}}) & = & {{\mathit{mt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\ +{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{mt}}) & = & {{\mathit{mt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\ \end{array} $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{tt}}) & = & {{\mathit{tt}}}{{}[ {:=}\, {{\mathit{dt}}^\ast} ]} & \quad \mbox{if}~ {{\mathit{dt}}^\ast} = {\mathit{moduleinst}}{.}\mathsf{types} \\ +{{\mathrm{inst}}}_{{\mathit{moduleinst}}}({\mathit{tt}}) & = & {{\mathit{tt}}}{{}[ {:=}\, {\mathit{moduleinst}}{.}\mathsf{types} ]} \\ \end{array} $$ @@ -9726,6 +9887,7 @@ $$ {\land}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}_1^\ast} \neq \epsilon \\ \end{array} \\ {[\textsc{\scriptsize E{-}ctxt{-}label}]} \quad & z ; ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}_0^\ast} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {z'} ; ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}}_0^\ast} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ z ; {{\mathit{instr}}^\ast} \hookrightarrow {z'} ; {{\mathit{instr}'}^\ast} \\ +{[\textsc{\scriptsize E{-}ctxt{-}handler}]} \quad & z ; ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {z'} ; ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ z ; {{\mathit{instr}}^\ast} \hookrightarrow {z'} ; {{\mathit{instr}'}^\ast} \\ {[\textsc{\scriptsize E{-}ctxt{-}frame}]} \quad & s ; f ; ({{\mathsf{frame}}_{n}}{\{ {f'} \}}~{{\mathit{instr}}^\ast}) & \hookrightarrow & {s'} ; f ; ({{\mathsf{frame}}_{n}}{\{ {f''} \}}~{{\mathit{instr}'}^\ast}) & \quad \mbox{if}~ s ; {f'} ; {{\mathit{instr}}^\ast} \hookrightarrow {s'} ; {f''} ; {{\mathit{instr}'}^\ast} \\ \end{array} $$ @@ -9812,7 +9974,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & (\mathsf{br}~l) & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null}~{\mathit{ht}} \\ +{[\textsc{\scriptsize E{-}br\_on\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & (\mathsf{br}~l) & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}br\_on\_null{-}addr}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_null}~l) & \hookrightarrow & {\mathit{val}} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9821,7 +9983,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_non\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & \epsilon & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null}~{\mathit{ht}} \\ +{[\textsc{\scriptsize E{-}br\_on\_non\_null{-}null}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & \epsilon & \quad \mbox{if}~ {\mathit{val}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}br\_on\_non\_null{-}addr}]} \quad & {\mathit{val}}~(\mathsf{br\_on\_non\_null}~l) & \hookrightarrow & {\mathit{val}}~(\mathsf{br}~l) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9830,11 +9992,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_cast{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}}~(\mathsf{br}~l) & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ s \vdash {\mathit{ref}} : {\mathit{rt}} \\ -{\land}~ \{ \} \vdash {\mathit{rt}} \leq {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}_2) \\ -\end{array} \\ +{[\textsc{\scriptsize E{-}br\_on\_cast{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}}~(\mathsf{br}~l) & \quad \mbox{if}~ s \vdash {\mathit{ref}} : {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}_2) \\ {[\textsc{\scriptsize E{-}br\_on\_cast{-}fail}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9843,11 +10001,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}br\_on\_cast\_fail{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}} & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ s \vdash {\mathit{ref}} : {\mathit{rt}} \\ -{\land}~ \{ \} \vdash {\mathit{rt}} \leq {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}_2) \\ -\end{array} \\ +{[\textsc{\scriptsize E{-}br\_on\_cast\_fail{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}} & \quad \mbox{if}~ s \vdash {\mathit{ref}} : {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}_2) \\ {[\textsc{\scriptsize E{-}br\_on\_cast\_fail{-}fail}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{br\_on\_cast\_fail}~l~{\mathit{rt}}_1~{\mathit{rt}}_2) & \hookrightarrow & {\mathit{ref}}~(\mathsf{br}~l) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -9857,8 +10011,13 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}call}]} \quad & z ; (\mathsf{call}~x) & \hookrightarrow & (\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~z{.}\mathsf{funcs}{}[a]{.}\mathsf{type}) & \quad \mbox{if}~ z{.}\mathsf{module}{.}\mathsf{funcs}{}[x] = a \\ -{[\textsc{\scriptsize E{-}call\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{call\_ref}~y) & \hookrightarrow & \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}call\_ref{-}func}]} \quad & z ; {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \hookrightarrow & ({{\mathsf{frame}}_{m}}{\{ f \}}~({{\mathsf{label}}_{m}}{\{ \epsilon \}}~{{\mathit{instr}}^\ast})) & \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lrcl@{}l@{}} +{[\textsc{\scriptsize E{-}call\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{call\_ref}~y) & \hookrightarrow & z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}call\_ref{-}func}]} \quad & z ; {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \hookrightarrow & z ; ({{\mathsf{frame}}_{m}}{\{ f \}}~({{\mathsf{label}}_{m}}{\{ \epsilon \}}~{{\mathit{instr}}^\ast})) & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} @@ -9868,11 +10027,29 @@ $$ {\land}~ f = \{ \mathsf{locals}~{{\mathit{val}}^{n}}~{({{\mathrm{default}}}_{t})^\ast},\;\allowbreak \mathsf{module}~{\mathit{fi}}{.}\mathsf{module} \} \\ \end{array} } \\ +{[\textsc{\scriptsize E{-}call\_ref{-}hostfunc{-}res}]} \quad & s ; f ; {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \hookrightarrow & {s'} ; f ; {\mathit{result}} & \\ +&&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ (s ; f){.}\mathsf{funcs}{}[a] = {\mathit{fi}} \\ +{\land}~ {\mathit{fi}}{.}\mathsf{type} \approx \mathsf{func}~{t_1^{n}} \rightarrow {t_2^{m}} \\ +{\land}~ {\mathit{fi}}{.}\mathsf{code} = {\mathit{hf}} \\ +{\land}~ ({s'}, {\mathit{result}}) \in {{\mathit{hf}}}{(s, {{\mathit{val}}^{n}})} \\ +\end{array} +} \\ +{[\textsc{\scriptsize E{-}call\_ref{-}hostfunc{-}div}]} \quad & s ; f ; {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \hookrightarrow & s ; f ; (\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \\ +&&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ (s ; f){.}\mathsf{funcs}{}[a] = {\mathit{fi}} \\ +{\land}~ {\mathit{fi}}{.}\mathsf{type} \approx \mathsf{func}~{t_1^{n}} \rightarrow {t_2^{m}} \\ +{\land}~ {\mathit{fi}}{.}\mathsf{code} = {\mathit{hf}} \\ +{\land}~ \mathsf{bot} \in {{\mathit{hf}}}{(s, {{\mathit{val}}^{n}})} \\ +\end{array} +} \\ \end{array} $$ -\vspace{1ex} - $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}return\_call}]} \quad & z ; (\mathsf{return\_call}~x) & \hookrightarrow & (\mathsf{ref{.}func}~a)~(\mathsf{return\_call\_ref}~z{.}\mathsf{funcs}{}[a]{.}\mathsf{type}) & \quad \mbox{if}~ z{.}\mathsf{module}{.}\mathsf{funcs}{}[x] = a \\ @@ -9885,7 +10062,7 @@ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}return\_call\_ref{-}label}]} \quad & z ; ({{\mathsf{label}}_{k}}{\{ {{\mathit{instr}'}^\ast} \}}~{{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y) \\ {[\textsc{\scriptsize E{-}return\_call\_ref{-}handler}]} \quad & z ; ({{\mathsf{handler}}_{k}}{\{ {{\mathit{catch}}^\ast} \}}~{{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^\ast}~(\mathsf{return\_call\_ref}~y) \\ -{[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}null}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}}^\ast}~(\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}null}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}}^\ast}~(\mathsf{ref{.}null})~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}return\_call\_ref{-}frame{-}addr}]} \quad & z ; ({{\mathsf{frame}}_{k}}{\{ f \}}~{{\mathit{val}'}^\ast}~{{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{return\_call\_ref}~y)~{{\mathit{instr}}^\ast}) & \hookrightarrow & {{\mathit{val}}^{n}}~(\mathsf{ref{.}func}~a)~(\mathsf{call\_ref}~y) & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{funcs}{}[a]{.}\mathsf{type} \approx \mathsf{func}~{t_1^{n}} \rightarrow {t_2^{m}} @@ -9921,14 +10098,14 @@ $$ \begin{array}[t]{@{}l@{}} \mbox{if}~ z{.}\mathsf{tags}{}[x]{.}\mathsf{type} \approx \mathsf{func}~{t^{n}} \rightarrow \epsilon \\ {\land}~ a = {|z{.}\mathsf{exns}|} \\ -{\land}~ {\mathit{exn}} = \{ \mathsf{tag}~z{.}\mathsf{tags}{}[x],\;\allowbreak \mathsf{fields}~{{\mathit{val}}^{n}} \} \\ +{\land}~ {\mathit{exn}} = \{ \mathsf{tag}~z{.}\mathsf{module}{.}\mathsf{tags}{}[x],\;\allowbreak \mathsf{fields}~{{\mathit{val}}^{n}} \} \\ \end{array} \\ \end{array} $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}throw\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{throw\_ref} & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}throw\_ref{-}null}]} \quad & z ; (\mathsf{ref{.}null})~\mathsf{throw\_ref} & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}throw\_ref{-}instrs}]} \quad & z ; {{\mathit{val}}^\ast}~(\mathsf{ref{.}exn}~a)~\mathsf{throw\_ref}~{{\mathit{instr}}^\ast} & \hookrightarrow & (\mathsf{ref{.}exn}~a)~\mathsf{throw\_ref} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}^\ast} \neq \epsilon @@ -9940,7 +10117,7 @@ $$ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ z{.}\mathsf{exns}{}[a]{.}\mathsf{tag} = z{.}\mathsf{tags}{}[x] \\ +\mbox{if}~ z{.}\mathsf{exns}{}[a]{.}\mathsf{tag} = z{.}\mathsf{module}{.}\mathsf{tags}{}[x] \\ {\land}~ {{\mathit{val}}^\ast} = z{.}\mathsf{exns}{}[a]{.}\mathsf{fields} \\ \end{array} } \\ @@ -9948,7 +10125,7 @@ $$ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ z{.}\mathsf{exns}{}[a]{.}\mathsf{tag} = z{.}\mathsf{tags}{}[x] \\ +\mbox{if}~ z{.}\mathsf{exns}{}[a]{.}\mathsf{tag} = z{.}\mathsf{module}{.}\mathsf{tags}{}[x] \\ {\land}~ {{\mathit{val}}^\ast} = z{.}\mathsf{exns}{}[a]{.}\mathsf{fields} \\ \end{array} } \\ @@ -9979,6 +10156,7 @@ $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}trap{-}instrs}]} \quad & {{\mathit{val}}^\ast}~\mathsf{trap}~{{\mathit{instr}}^\ast} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {{\mathit{val}}^\ast} \neq \epsilon \lor {{\mathit{instr}}^\ast} \neq \epsilon \\ {[\textsc{\scriptsize E{-}trap{-}label}]} \quad & ({{\mathsf{label}}_{n}}{\{ {{\mathit{instr}'}^\ast} \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}trap{-}handler}]} \quad & ({{\mathsf{handler}}_{n}}{\{ {{\mathit{catch}}^\ast} \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}trap{-}frame}]} \quad & ({{\mathsf{frame}}_{n}}{\{ f \}}~\mathsf{trap}) & \hookrightarrow & \mathsf{trap} \\ \end{array} $$ @@ -10155,13 +10333,13 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}vload{-}pack{-}oob}]} \quad & z ; ({\mathit{at}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{M}{\mathsf{x}}{K}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i + {\mathit{ao}}{.}\mathsf{offset} + M \cdot K / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ -{[\textsc{\scriptsize E{-}vload{-}pack{-}val}]} \quad & z ; ({\mathit{at}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{M}{\mathsf{x}}{K}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) & \hookrightarrow & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) & \\ +{[\textsc{\scriptsize E{-}vload{-}pack{-}oob}]} \quad & z ; ({\mathit{at}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{K}{\mathsf{x}}{M}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i + {\mathit{ao}}{.}\mathsf{offset} + K \cdot M / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} \\ +{[\textsc{\scriptsize E{-}vload{-}pack{-}val}]} \quad & z ; ({\mathit{at}}{.}\mathsf{const}~i)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{load}}{{K}{\mathsf{x}}{M}{\mathsf{\_}}{{\mathit{sx}}}}~x~{\mathit{ao}}) & \hookrightarrow & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ ({{\mathrm{bytes}}}_{{\mathsf{i}}{M}}(j) = z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} + k \cdot M / 8 : M / 8])^{k {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} +\quad \mbox{if}~ i + {\mathit{ao}}{.}\mathsf{offset} + N / 8 > {|z{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}|} } \\ {[\textsc{\scriptsize E{-}vstore\_lane{-}val}]} \quad & z ; ({\mathit{at}}{.}\mathsf{const}~i)~(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)~({\mathsf{v{\scriptstyle 128}}{.}\mathsf{store}}{N}{\mathsf{\_}}{\mathsf{lane}}~x~{\mathit{ao}}~j) & \hookrightarrow & z{}[{.}\mathsf{mems}{}[x]{.}\mathsf{bytes}{}[i + {\mathit{ao}}{.}\mathsf{offset} : N / 8] = {b^\ast}] ; \epsilon & \\ &&& \multicolumn{2}{@{}l@{}}{\quad @@ -10367,7 +10545,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.null{-}idx}]} \quad & z ; (\mathsf{ref{.}null}~x) & \hookrightarrow & (\mathsf{ref{.}null}~z{.}\mathsf{types}{}[x]) \\ +{[\textsc{\scriptsize E{-}ref.null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}}) & \hookrightarrow & \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.func}]} \quad & z ; (\mathsf{ref{.}func}~x) & \hookrightarrow & (\mathsf{ref{.}func}~z{.}\mathsf{module}{.}\mathsf{funcs}{}[x]) \\ \end{array} $$ @@ -10382,7 +10560,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}} = (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{[\textsc{\scriptsize E{-}ref.is\_null{-}true}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.is\_null{-}false}]} \quad & {\mathit{ref}}~\mathsf{ref{.}is\_null} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10391,7 +10569,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.as\_non\_null{-}null}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {\mathit{ref}} = (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{[\textsc{\scriptsize E{-}ref.as\_non\_null{-}null}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.as\_non\_null{-}addr}]} \quad & {\mathit{ref}}~\mathsf{ref{.}as\_non\_null} & \hookrightarrow & {\mathit{ref}} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10400,7 +10578,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}}_1 = (\mathsf{ref{.}null}~{\mathit{ht}}_1) \land {\mathit{ref}}_2 = (\mathsf{ref{.}null}~{\mathit{ht}}_2) \\ +{[\textsc{\scriptsize E{-}ref.eq{-}null}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ {\mathit{ref}}_1 = \mathsf{ref{.}null} \land {\mathit{ref}}_2 = \mathsf{ref{.}null} \\ {[\textsc{\scriptsize E{-}ref.eq{-}true}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{otherwise, if}~ {\mathit{ref}}_1 = {\mathit{ref}}_2 \\ {[\textsc{\scriptsize E{-}ref.eq{-}false}]} \quad & {\mathit{ref}}_1~{\mathit{ref}}_2~\mathsf{ref{.}eq} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) & \quad \mbox{otherwise} \\ \end{array} @@ -10410,11 +10588,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.test{-}true}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}test}~{\mathit{rt}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ s \vdash {\mathit{ref}} : {\mathit{rt}'} \\ -{\land}~ \{ \} \vdash {\mathit{rt}'} \leq {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}) \\ -\end{array} \\ +{[\textsc{\scriptsize E{-}ref.test{-}true}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}test}~{\mathit{rt}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~1) & \quad \mbox{if}~ s \vdash {\mathit{ref}} : {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}) \\ {[\textsc{\scriptsize E{-}ref.test{-}false}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}test}~{\mathit{rt}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~0) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10423,11 +10597,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}ref.cast{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}cast}~{\mathit{rt}}) & \hookrightarrow & {\mathit{ref}} & \quad -\begin{array}[t]{@{}l@{}} -\mbox{if}~ s \vdash {\mathit{ref}} : {\mathit{rt}'} \\ -{\land}~ \{ \} \vdash {\mathit{rt}'} \leq {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}) \\ -\end{array} \\ +{[\textsc{\scriptsize E{-}ref.cast{-}succeed}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}cast}~{\mathit{rt}}) & \hookrightarrow & {\mathit{ref}} & \quad \mbox{if}~ s \vdash {\mathit{ref}} : {{\mathrm{inst}}}_{f{.}\mathsf{module}}({\mathit{rt}}) \\ {[\textsc{\scriptsize E{-}ref.cast{-}fail}]} \quad & s ; f ; {\mathit{ref}}~(\mathsf{ref{.}cast}~{\mathit{rt}}) & \hookrightarrow & \mathsf{trap} & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10436,7 +10606,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}i31.get{-}null}]} \quad & (\mathsf{ref{.}null})~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}i31.get{-}num}]} \quad & (\mathsf{ref{.}i{\scriptstyle 31}}~i)~({\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{{\mathit{sx}}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{{{{\mathrm{extend}}}_{31, 32}^{{\mathit{sx}}}}}{(i)}) \\ \end{array} $$ @@ -10468,7 +10638,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}struct.get{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}struct.get{-}null}]} \quad & z ; (\mathsf{ref{.}null})~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}struct.get{-}struct}]} \quad & z ; (\mathsf{ref{.}struct}~a)~({\mathsf{struct{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x~i) & \hookrightarrow & {{{{\mathrm{unpack}}}_{{{\mathit{zt}}^\ast}{}[i]}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i])} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} @@ -10480,7 +10650,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}struct.set{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}struct.set{-}null}]} \quad & z ; (\mathsf{ref{.}null})~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z ; \mathsf{trap} \\ {[\textsc{\scriptsize E{-}struct.set{-}struct}]} \quad & z ; (\mathsf{ref{.}struct}~a)~{\mathit{val}}~(\mathsf{struct{.}set}~x~i) & \hookrightarrow & z{}[{.}\mathsf{structs}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{{\mathit{zt}}^\ast}{}[i]}({\mathit{val}})] ; \epsilon & \\ &&& \multicolumn{2}{@{}l@{}}{\quad \quad \mbox{if}~ z{.}\mathsf{types}{}[x] \approx \mathsf{struct}~{({\mathsf{mut}^?}~{\mathit{zt}})^\ast} @@ -10558,7 +10728,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.get{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.get{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.get{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~({\mathsf{array{.}get}}{\mathsf{\_}}{{{\mathit{sx}}^?}}~x) & \hookrightarrow & {{{{\mathrm{unpack}}}_{{\mathit{zt}}}^{{{\mathit{sx}}^?}}}}{(z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i])} & \\ &&& \multicolumn{2}{@{}l@{}}{\quad @@ -10571,7 +10741,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.set{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.set{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z ; \mathsf{trap} & \quad \mbox{if}~ i \geq {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.set{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{array{.}set}~x) & \hookrightarrow & z{}[{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}{}[i] = {{\mathrm{pack}}}_{{\mathit{zt}}}({\mathit{val}})] ; \epsilon & \\ &&& \multicolumn{2}{@{}l@{}}{\quad @@ -10584,7 +10754,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.len{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{array{.}len} & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.len{-}null}]} \quad & z ; (\mathsf{ref{.}null})~\mathsf{array{.}len} & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.len{-}array}]} \quad & z ; (\mathsf{ref{.}array}~a)~\mathsf{array{.}len} & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~{|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|}) \\ \end{array} $$ @@ -10593,7 +10763,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.fill{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.fill{-}oob}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \mathsf{trap} & \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} \\ {[\textsc{\scriptsize E{-}array.fill{-}zero}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & \epsilon & \quad \mbox{otherwise, if}~ n = 0 \\ {[\textsc{\scriptsize E{-}array.fill{-}succ}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}fill}~x) & \hookrightarrow & & \\ @@ -10603,8 +10773,8 @@ $$ (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i + 1)~{\mathit{val}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n - 1)~(\mathsf{array{.}fill}~x) \end{array} & \quad \mbox{otherwise} \\ \end{array} } \\ -{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}}_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ -{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}null}~{\mathit{ht}}_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}null1}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~{\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.copy{-}null2}]} \quad & z ; {\mathit{ref}}~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.copy{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a_1)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_1)~(\mathsf{ref{.}array}~a_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i_2)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}copy}~x_1~x_2) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i_1 + n > {|z{.}\mathsf{arrays}{}[a_1]{.}\mathsf{fields}|} @@ -10660,7 +10830,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_elem{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.init\_elem{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_elem}~x~y) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} @@ -10692,7 +10862,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref{.}null}~{\mathit{ht}})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} \\ +{[\textsc{\scriptsize E{-}array.init\_data{-}null}]} \quad & z ; (\mathsf{ref{.}null})~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} \\ {[\textsc{\scriptsize E{-}array.init\_data{-}oob1}]} \quad & z ; (\mathsf{ref{.}array}~a)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~j)~(\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n)~(\mathsf{array{.}init\_data}~x~y) & \hookrightarrow & \mathsf{trap} & \\ & \multicolumn{4}{@{}l@{}}{\quad \quad \mbox{if}~ i + n > {|z{.}\mathsf{arrays}{}[a]{.}\mathsf{fields}|} @@ -10732,8 +10902,8 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}extern.convert\_any{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}null}~\mathsf{extern}) \\ -{[\textsc{\scriptsize E{-}extern.convert\_any{-}addr}]} \quad & {\mathit{addrref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}extern}~{\mathit{addrref}}) \\ +{[\textsc{\scriptsize E{-}extern.convert\_any{-}null}]} \quad & {\mathit{ref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & \mathsf{ref{.}null} & \quad \mbox{if}~ {\mathit{ref}} = \mathsf{ref{.}null} \\ +{[\textsc{\scriptsize E{-}extern.convert\_any{-}addr}]} \quad & {\mathit{ref}}~\mathsf{extern{.}convert\_any} & \hookrightarrow & (\mathsf{ref{.}extern}~{\mathit{ref}}) & \quad \mbox{otherwise} \\ \end{array} $$ @@ -10741,8 +10911,8 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}any.convert\_extern{-}null}]} \quad & (\mathsf{ref{.}null}~{\mathit{ht}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & (\mathsf{ref{.}null}~\mathsf{any}) \\ -{[\textsc{\scriptsize E{-}any.convert\_extern{-}addr}]} \quad & (\mathsf{ref{.}extern}~{\mathit{addrref}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & {\mathit{addrref}} \\ +{[\textsc{\scriptsize E{-}any.convert\_extern{-}null}]} \quad & (\mathsf{ref{.}null})~\mathsf{any{.}convert\_extern} & \hookrightarrow & \mathsf{ref{.}null} \\ +{[\textsc{\scriptsize E{-}any.convert\_extern{-}addr}]} \quad & (\mathsf{ref{.}extern}~{\mathit{ref}})~\mathsf{any{.}convert\_extern} & \hookrightarrow & {\mathit{ref}} \\ \end{array} $$ @@ -10822,7 +10992,7 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}vvtestop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} \mathsf{any\_true}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) & \quad \mbox{if}~ c = {{\mathrm{ine}}}_{{|\mathsf{v{\scriptstyle 128}}|}}(c_1, 0) \\ +{[\textsc{\scriptsize E{-}vvtestop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} \mathsf{any\_true}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) & \quad \mbox{if}~ c = {{\mathrm{inez}}}_{{|\mathsf{v{\scriptstyle 128}}|}}(c_1) \\ \end{array} $$ @@ -10857,7 +11027,11 @@ $$ $$ \begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}vtestop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~({\mathit{sh}} {.} {\mathit{vtestop}}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i) & \quad \mbox{if}~ i = {{\mathit{vtestop}}}{{}_{{\mathit{sh}}}(c_1)} \\ +{[\textsc{\scriptsize E{-}vtestop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~({{\mathsf{i}}{N}}{\mathsf{x}}{M} {.} \mathsf{all\_true}) & \hookrightarrow & (\mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~c) & \quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ {i^\ast} = {{\mathrm{lanes}}}_{{{\mathsf{i}}{N}}{\mathsf{x}}{M}}(c_1) \\ +{\land}~ c = {\Pi}\, ({{{\mathrm{inez}}}_{N}(i)^\ast}) \\ +\end{array} \\ \end{array} $$ @@ -11222,17 +11396,45 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{{\mathrm{evalexpr}}^\ast}}{(z, \epsilon)} & = & (z, \epsilon) \\ +{{{\mathrm{evalexpr}}^\ast}}{(z, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z''}, {\mathit{ref}}~{{\mathit{ref}'}^\ast}) & \\ +&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast {z'} ; {\mathit{ref}} \\ +{\land}~ ({z''}, {{\mathit{ref}'}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{({z'}, {{\mathit{expr}'}^\ast})} \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, \epsilon)} & = & (z, \epsilon) \\ +{{{{\mathrm{evalexpr}}^\ast}^\ast}}{(z, {{\mathit{expr}}^\ast}~{{{\mathit{expr}'}^\ast}^\ast})} & = & ({z''}, {{\mathit{ref}}^\ast}~{{{\mathit{ref}'}^\ast}^\ast}) & \\ +&& \multicolumn{2}{@{}l@{}}{\quad +\quad +\begin{array}[t]{@{}l@{}} +\mbox{if}~ ({z'}, {{\mathit{ref}}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{(z, {{\mathit{expr}}^\ast})} \\ +{\land}~ ({z''}, {{{\mathit{ref}'}^\ast}^\ast}) = {{{{\mathrm{evalexpr}}^\ast}^\ast}}{({z'}, {{{\mathit{expr}'}^\ast}^\ast})} \\ +\end{array} +} \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lcl@{}l@{}} {{{\mathrm{evalglobal}}^\ast}}{(z, \epsilon, \epsilon)} & = & (z, \epsilon) \\ -{{{\mathrm{evalglobal}}^\ast}}{(z, {\mathit{gt}}~{{\mathit{gt}'}^\ast}, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z'}, {\mathit{val}}~{{\mathit{val}'}^\ast}) & \\ +{{{\mathrm{evalglobal}}^\ast}}{(z, {\mathit{gt}}~{{\mathit{gt}'}^\ast}, {\mathit{expr}}~{{\mathit{expr}'}^\ast})} & = & ({z''}, {\mathit{val}}~{{\mathit{val}'}^\ast}) & \\ && \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast z ; {\mathit{val}} \\ -{\land}~ z = s ; f \\ +\mbox{if}~ z ; {\mathit{expr}} \hookrightarrow^\ast {z'} ; {\mathit{val}} \\ +{\land}~ {z'} = s ; f \\ {\land}~ ({s'}, a) = {\mathrm{allocglobal}}(s, {\mathit{gt}}, {\mathit{val}}) \\ -{\land}~ ({z'}, {{\mathit{val}'}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(({s'} ; f{}[{.}\mathsf{module}{.}\mathsf{globals} \mathrel{{=}{\oplus}} a]), {{\mathit{gt}'}^\ast}, {{\mathit{expr}'}^\ast})} \\ +{\land}~ ({z''}, {{\mathit{val}'}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(({s'} ; f{}[{.}\mathsf{module}{.}\mathsf{globals} \mathrel{{=}{\oplus}} a]), {{\mathit{gt}'}^\ast}, {{\mathit{expr}'}^\ast})} \\ \end{array} } \\ \end{array} @@ -11240,7 +11442,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}) & = & {s'} ; \{ \mathsf{module}~{\mathit{moduleinst}} \} ; {{\mathit{instr}}_{\mathsf{e}}^\ast}~{{\mathit{instr}}_{\mathsf{d}}^\ast}~{{\mathit{instr}}_{\mathsf{s}}^?} & \\ +{\mathrm{instantiate}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}) & = & {s''''} ; \{ \mathsf{module}~{\mathit{moduleinst}} \} ; {{\mathit{instr}}_{\mathsf{e}}^\ast}~{{\mathit{instr}}_{\mathsf{d}}^\ast}~{{\mathit{instr}}_{\mathsf{s}}^?} & \\ \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} @@ -11258,9 +11460,10 @@ $$ \mathsf{funcs}~{\mathrm{funcs}}({{\mathit{externaddr}}^\ast})~{({|s{.}\mathsf{funcs}|} + i_{\mathsf{f}})^{i_{\mathsf{f}}<{|{{\mathit{func}}^\ast}|}}} \}\end{array} \\ {\land}~ z = s ; \{ \mathsf{module}~{\mathit{moduleinst}}_0 \} \\ {\land}~ ({z'}, {{\mathit{val}}_{\mathsf{g}}^\ast}) = {{{\mathrm{evalglobal}}^\ast}}{(z, {{\mathit{globaltype}}^\ast}, {{\mathit{expr}}_{\mathsf{g}}^\ast})} \\ -{\land}~ ({z'} ; {\mathit{expr}}_{\mathsf{t}} \hookrightarrow^\ast {z'} ; {\mathit{ref}}_{\mathsf{t}})^\ast \\ -{\land}~ {({z'} ; {\mathit{expr}}_{\mathsf{e}} \hookrightarrow^\ast {z'} ; {\mathit{ref}}_{\mathsf{e}})^\ast}^\ast \\ -{\land}~ ({s'}, {\mathit{moduleinst}}) = {\mathrm{allocmodule}}(s, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}_{\mathsf{g}}^\ast}, {{\mathit{ref}}_{\mathsf{t}}^\ast}, {({{\mathit{ref}}_{\mathsf{e}}^\ast})^\ast}) \\ +{\land}~ ({z''}, {{\mathit{ref}}_{\mathsf{t}}^\ast}) = {{{\mathrm{evalexpr}}^\ast}}{({z'}, {{\mathit{expr}}_{\mathsf{t}}^\ast})} \\ +{\land}~ ({z'''}, {{{\mathit{ref}}_{\mathsf{e}}^\ast}^\ast}) = {{{{\mathrm{evalexpr}}^\ast}^\ast}}{({z''}, {{{\mathit{expr}}_{\mathsf{e}}^\ast}^\ast})} \\ +{\land}~ {z'''} = {s'''} ; f \\ +{\land}~ ({s''''}, {\mathit{moduleinst}}) = {\mathrm{allocmodule}}({s'''}, {\mathit{module}}, {{\mathit{externaddr}}^\ast}, {{\mathit{val}}_{\mathsf{g}}^\ast}, {{\mathit{ref}}_{\mathsf{t}}^\ast}, {({{\mathit{ref}}_{\mathsf{e}}^\ast})^\ast}) \\ {\land}~ {{\mathit{instr}}_{\mathsf{d}}^\ast} = {\bigoplus}\, {{{\mathrm{rundata}}}_{i_{\mathsf{d}}}({{\mathit{data}}^\ast}{}[i_{\mathsf{d}}])^{i_{\mathsf{d}}<{|{{\mathit{data}}^\ast}|}}} \\ {\land}~ {{\mathit{instr}}_{\mathsf{e}}^\ast} = {\bigoplus}\, {{{\mathrm{runelem}}}_{i_{\mathsf{e}}}({{\mathit{elem}}^\ast}{}[i_{\mathsf{e}}])^{i_{\mathsf{e}}<{|{{\mathit{elem}}^\ast}|}}} \\ {\land}~ {{\mathit{instr}}_{\mathsf{s}}^?} = {(\mathsf{call}~x)^?} \\ @@ -11274,7 +11477,7 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{invoke}}(s, {\mathit{funcaddr}}, {{\mathit{val}}^\ast}) & = & s ; \{ \mathsf{module}~\{ \} \} ; {{\mathit{val}}^\ast}~(\mathsf{ref{.}func}~{\mathit{funcaddr}})~(\mathsf{call\_ref}~s{.}\mathsf{funcs}{}[{\mathit{funcaddr}}]{.}\mathsf{type}) & \\ - \multicolumn{4}{@{}l@{}}{\quad +&& \multicolumn{2}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} \mbox{if}~ s{.}\mathsf{funcs}{}[{\mathit{funcaddr}}]{.}\mathsf{type} \approx \mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast} \\ @@ -11293,7 +11496,7 @@ $$ & & | & n{:}{\mathtt{byte}}~~m{:}{{\mathtt{u}}}{(N - 7)} & \quad\Rightarrow\quad{} & {2^{7}} \cdot m + (n - {2^{7}}) & \quad \mbox{if}~ n \geq {2^{7}} \land N > 7 \\ & {{\mathtt{s}}}{N} & ::= & n{:}{\mathtt{byte}} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < {2^{6}} \land n < {2^{N - 1}} \\ & & | & n{:}{\mathtt{byte}} & \quad\Rightarrow\quad{} & n - {2^{7}} & \quad \mbox{if}~ {2^{6}} \leq n < {2^{7}} \land n \geq {2^{7}} - {2^{N - 1}} \\ -& & | & n{:}{\mathtt{byte}}~~i{:}{{\mathtt{u}}}{(N - 7)} & \quad\Rightarrow\quad{} & {2^{7}} \cdot i + (n - {2^{7}}) & \quad \mbox{if}~ n \geq {2^{7}} \land N > 7 \\ +& & | & n{:}{\mathtt{byte}}~~i{:}{{\mathtt{s}}}{(N - 7)} & \quad\Rightarrow\quad{} & {2^{7}} \cdot i + (n - {2^{7}}) & \quad \mbox{if}~ n \geq {2^{7}} \land N > 7 \\ & {{\mathtt{i}}}{N} & ::= & i{:}{{\mathtt{s}}}{N} & \quad\Rightarrow\quad{} & {{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)} \\ \end{array} $$ @@ -11310,11 +11513,13 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{u32}} & ::= & n{:}{{\mathtt{u}}}{32} & \quad\Rightarrow\quad{} & n \\ -& {\mathtt{u64}} & ::= & n{:}{{\mathtt{u}}}{64} & \quad\Rightarrow\quad{} & n \\ -& {\mathtt{s33}} & ::= & i{:}{{\mathtt{s}}}{33} & \quad\Rightarrow\quad{} & i \\ -& {\mathtt{f32}} & ::= & p{:}{{\mathtt{f}}}{32} & \quad\Rightarrow\quad{} & p \\ -& {\mathtt{f64}} & ::= & p{:}{{\mathtt{f}}}{64} & \quad\Rightarrow\quad{} & p \\ +& {\mathtt{u32}} & ::= & {{\mathtt{u}}}{32} \\ +& {\mathtt{u64}} & ::= & {{\mathtt{u}}}{64} \\ +& {\mathtt{s33}} & ::= & {{\mathtt{s}}}{33} \\ +& {\mathtt{i32}} & ::= & {{\mathtt{u}}}{32} \\ +& {\mathtt{i64}} & ::= & {{\mathtt{u}}}{64} \\ +& {\mathtt{f32}} & ::= & {{\mathtt{f}}}{32} \\ +& {\mathtt{f64}} & ::= & {{\mathtt{f}}}{64} \\ \end{array} $$ @@ -11379,6 +11584,7 @@ $$ & {\mathtt{dataidx}} & ::= & x{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & x \\ & {\mathtt{elemidx}} & ::= & x{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & x \\ & {\mathtt{localidx}} & ::= & x{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & x \\ +& {\mathtt{fieldidx}} & ::= & x{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & x \\ & {\mathtt{labelidx}} & ::= & l{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & l \\ & {\mathtt{externidx}} & ::= & \mathtt{0x00}~~x{:}{\mathtt{funcidx}} & \quad\Rightarrow\quad{} & \mathsf{func}~x \\ & & | & \mathtt{0x01}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{table}~x \\ @@ -11486,15 +11692,24 @@ $$ & & | & \mathtt{0x1A} & \quad\Rightarrow\quad{} & \mathsf{drop} \\ & & | & \mathtt{0x1B} & \quad\Rightarrow\quad{} & \mathsf{select} \\ & & | & \mathtt{0x1C}~~{t^\ast}{:}{\mathtt{list}}({\mathtt{valtype}}) & \quad\Rightarrow\quad{} & \mathsf{select}~{t^\ast} \\ -& & | & \dots \\ \end{array} $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {\mathit{castop}} & ::= & ({\mathsf{null}^?}, {\mathsf{null}^?}) \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{blocktype}} & ::= & \mathtt{0x40} & \quad\Rightarrow\quad{} & \epsilon \\ +& {\mathtt{castop}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & (\epsilon, \epsilon) \\ +& & | & \mathtt{0x01} & \quad\Rightarrow\quad{} & (\mathsf{null}, \epsilon) \\ +& & | & \mathtt{0x02} & \quad\Rightarrow\quad{} & (\epsilon, \mathsf{null}) \\ +& & | & \mathtt{0x03} & \quad\Rightarrow\quad{} & (\mathsf{null}, \mathsf{null}) \\ +& {\mathtt{blocktype}} & ::= & \mathtt{0x40} & \quad\Rightarrow\quad{} & \epsilon \\ & & | & t{:}{\mathtt{valtype}} & \quad\Rightarrow\quad{} & t \\ & & | & i{:}{\mathtt{s33}} & \quad\Rightarrow\quad{} & i & \quad \mbox{if}~ i \geq 0 \\ & {\mathtt{instr}} & ::= & \dots \\ @@ -11513,8 +11728,15 @@ $$ & & | & \mathtt{0x11}~~y{:}{\mathtt{typeidx}}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{call\_indirect}~x~y \\ & & | & \mathtt{0x12}~~x{:}{\mathtt{funcidx}} & \quad\Rightarrow\quad{} & \mathsf{return\_call}~x \\ & & | & \mathtt{0x13}~~y{:}{\mathtt{typeidx}}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{return\_call\_indirect}~x~y \\ +& & | & \mathtt{0x14}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{call\_ref}~x \\ +& & | & \mathtt{0x15}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{return\_call\_ref}~x \\ & & | & \mathtt{0x1F}~~{\mathit{bt}}{:}{\mathtt{blocktype}}~~{c^\ast}{:}{\mathtt{list}}({\mathtt{catch}})~~{({\mathit{in}}{:}{\mathtt{instr}})^\ast}~~\mathtt{0x0B} & \quad\Rightarrow\quad{} & \mathsf{try\_table}~{\mathit{bt}}~{c^\ast}~{{\mathit{in}}^\ast} \\ -& & | & \dots \\ +& & | & \mathtt{0xD5}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_null}~l \\ +& & | & \mathtt{0xD6}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_non\_null}~l \\ +& & | & \begin{array}[t]{@{}l@{}} \mathtt{0xFB}~~24{:}{\mathtt{u32}}~~({{\mathsf{null}}_1^?}, {{\mathsf{null}}_2^?}){:}{\mathtt{castop}} \\ + l{:}{\mathtt{labelidx}}~~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~~{\mathit{ht}}_2{:}{\mathtt{heaptype}} \end{array} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_cast}~l~(\mathsf{ref}~{{\mathsf{null}}_1^?}~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}}_2^?}~{\mathit{ht}}_2) \\ +& & | & \begin{array}[t]{@{}l@{}} \mathtt{0xFB}~~25{:}{\mathtt{u32}}~~({{\mathsf{null}}_1^?}, {{\mathsf{null}}_2^?}){:}{\mathtt{castop}} \\ + l{:}{\mathtt{labelidx}}~~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~~{\mathit{ht}}_2{:}{\mathtt{heaptype}} \end{array} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_cast\_fail}~l~(\mathsf{ref}~{{\mathsf{null}}_1^?}~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}}_2^?}~{\mathit{ht}}_2) \\ & {\mathtt{catch}} & ::= & \mathtt{0x00}~~x{:}{\mathtt{tagidx}}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{catch}~x~l \\ & & | & \mathtt{0x01}~~x{:}{\mathtt{tagidx}}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{catch\_ref}~x~l \\ & & | & \mathtt{0x02}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{catch\_all}~l \\ @@ -11532,7 +11754,6 @@ $$ & & | & \mathtt{0x22}~~x{:}{\mathtt{localidx}} & \quad\Rightarrow\quad{} & \mathsf{local{.}tee}~x \\ & & | & \mathtt{0x23}~~x{:}{\mathtt{globalidx}} & \quad\Rightarrow\quad{} & \mathsf{global{.}get}~x \\ & & | & \mathtt{0x24}~~x{:}{\mathtt{globalidx}} & \quad\Rightarrow\quad{} & \mathsf{global{.}set}~x \\ -& & | & \dots \\ \end{array} $$ @@ -11549,7 +11770,6 @@ $$ & & | & \mathtt{0xFC}~~15{:}{\mathtt{u32}}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{table{.}grow}~x \\ & & | & \mathtt{0xFC}~~16{:}{\mathtt{u32}}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{table{.}size}~x \\ & & | & \mathtt{0xFC}~~17{:}{\mathtt{u32}}~~x{:}{\mathtt{tableidx}} & \quad\Rightarrow\quad{} & \mathsf{table{.}fill}~x \\ -& & | & \dots \\ \end{array} $$ @@ -11563,8 +11783,8 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{memarg}} & ::= & n{:}{\mathtt{u32}}~~m{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & (0, \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \}) & \quad \mbox{if}~ n < {2^{6}} \\ -& & | & n{:}{\mathtt{u32}}~~x{:}{\mathtt{memidx}}~~m{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & (x, \{ \mathsf{align}~(n - {2^{6}}),\;\allowbreak \mathsf{offset}~m \}) & \quad \mbox{if}~ {2^{6}} \leq n < {2^{7}} \\ +& {\mathtt{memarg}} & ::= & n{:}{\mathtt{u32}}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & (0, \{ \mathsf{align}~n,\;\allowbreak \mathsf{offset}~m \}) & \quad \mbox{if}~ n < {2^{6}} \\ +& & | & n{:}{\mathtt{u32}}~~x{:}{\mathtt{memidx}}~~m{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & (x, \{ \mathsf{align}~(n - {2^{6}}),\;\allowbreak \mathsf{offset}~m \}) & \quad \mbox{if}~ {2^{6}} \leq n < {2^{7}} \\ & {\mathtt{instr}} & ::= & \dots \\ & & | & \mathtt{0x28}~~(x, {\mathit{ao}}){:}{\mathtt{memarg}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}}{.}\mathsf{load}~x~{\mathit{ao}} \\ & & | & \mathtt{0x29}~~(x, {\mathit{ao}}){:}{\mathtt{memarg}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}{.}\mathsf{load}~x~{\mathit{ao}} \\ @@ -11595,38 +11815,29 @@ $$ & & | & \mathtt{0xFC}~~9{:}{\mathtt{u32}}~~x{:}{\mathtt{dataidx}} & \quad\Rightarrow\quad{} & \mathsf{data{.}drop}~x \\ & & | & \mathtt{0xFC}~~10{:}{\mathtt{u32}}~~x_1{:}{\mathtt{memidx}}~~x_2{:}{\mathtt{memidx}} & \quad\Rightarrow\quad{} & \mathsf{memory{.}copy}~x_1~x_2 \\ & & | & \mathtt{0xFC}~~11{:}{\mathtt{u32}}~~x{:}{\mathtt{memidx}} & \quad\Rightarrow\quad{} & \mathsf{memory{.}fill}~x \\ -& & | & \dots \\ \end{array} $$ \vspace{1ex} -$$ -\begin{array}[t]{@{}lrrl@{}l@{}} -& {\mathit{castop}} & ::= & ({\mathsf{null}^?}, {\mathsf{null}^?}) \\ -\end{array} -$$ - $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{castop}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & (\epsilon, \epsilon) \\ -& & | & \mathtt{0x01} & \quad\Rightarrow\quad{} & (\mathsf{null}, \epsilon) \\ -& & | & \mathtt{0x02} & \quad\Rightarrow\quad{} & (\epsilon, \mathsf{null}) \\ -& & | & \mathtt{0x03} & \quad\Rightarrow\quad{} & (\mathsf{null}, \mathsf{null}) \\ & {\mathtt{instr}} & ::= & \dots \\ & & | & \mathtt{0xD0}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}null}~{\mathit{ht}} \\ & & | & \mathtt{0xD1} & \quad\Rightarrow\quad{} & \mathsf{ref{.}is\_null} \\ & & | & \mathtt{0xD2}~~x{:}{\mathtt{funcidx}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}func}~x \\ & & | & \mathtt{0xD3} & \quad\Rightarrow\quad{} & \mathsf{ref{.}eq} \\ & & | & \mathtt{0xD4} & \quad\Rightarrow\quad{} & \mathsf{ref{.}as\_non\_null} \\ -& & | & \mathtt{0xD5}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_null}~l \\ -& & | & \mathtt{0xD6}~~l{:}{\mathtt{labelidx}} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_non\_null}~l \\ +& & | & \mathtt{0xFB}~~20{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}test}~(\mathsf{ref}~{\mathit{ht}}) \\ +& & | & \mathtt{0xFB}~~21{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}test}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ +& & | & \mathtt{0xFB}~~22{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}cast}~(\mathsf{ref}~{\mathit{ht}}) \\ +& & | & \mathtt{0xFB}~~23{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}cast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ & & | & \mathtt{0xFB}~~0{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}new}~x \\ & & | & \mathtt{0xFB}~~1{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}new\_default}~x \\ -& & | & \mathtt{0xFB}~~2{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}get}~x~i \\ -& & | & \mathtt{0xFB}~~3{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{struct{.}get}}{\mathsf{\_}}{\mathsf{s}}~x~i \\ -& & | & \mathtt{0xFB}~~4{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{struct{.}get}}{\mathsf{\_}}{\mathsf{u}}~x~i \\ -& & | & \mathtt{0xFB}~~5{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}set}~x~i \\ +& & | & \mathtt{0xFB}~~2{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{fieldidx}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}get}~x~i \\ +& & | & \mathtt{0xFB}~~3{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{fieldidx}} & \quad\Rightarrow\quad{} & {\mathsf{struct{.}get}}{\mathsf{\_}}{\mathsf{s}}~x~i \\ +& & | & \mathtt{0xFB}~~4{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{fieldidx}} & \quad\Rightarrow\quad{} & {\mathsf{struct{.}get}}{\mathsf{\_}}{\mathsf{u}}~x~i \\ +& & | & \mathtt{0xFB}~~5{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~i{:}{\mathtt{fieldidx}} & \quad\Rightarrow\quad{} & \mathsf{struct{.}set}~x~i \\ & & | & \mathtt{0xFB}~~6{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{array{.}new}~x \\ & & | & \mathtt{0xFB}~~7{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{array{.}new\_default}~x \\ & & | & \mathtt{0xFB}~~8{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~n{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{array{.}new\_fixed}~x~n \\ @@ -11641,20 +11852,11 @@ $$ & & | & \mathtt{0xFB}~~17{:}{\mathtt{u32}}~~x_1{:}{\mathtt{typeidx}}~~x_2{:}{\mathtt{typeidx}} & \quad\Rightarrow\quad{} & \mathsf{array{.}copy}~x_1~x_2 \\ & & | & \mathtt{0xFB}~~18{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~y{:}{\mathtt{dataidx}} & \quad\Rightarrow\quad{} & \mathsf{array{.}init\_data}~x~y \\ & & | & \mathtt{0xFB}~~19{:}{\mathtt{u32}}~~x{:}{\mathtt{typeidx}}~~y{:}{\mathtt{elemidx}} & \quad\Rightarrow\quad{} & \mathsf{array{.}init\_elem}~x~y \\ -& & | & \mathtt{0xFB}~~20{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}test}~(\mathsf{ref}~{\mathit{ht}}) \\ -& & | & \mathtt{0xFB}~~21{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}test}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ -& & | & \mathtt{0xFB}~~22{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}cast}~(\mathsf{ref}~{\mathit{ht}}) \\ -& & | & \mathtt{0xFB}~~23{:}{\mathtt{u32}}~~{\mathit{ht}}{:}{\mathtt{heaptype}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}cast}~(\mathsf{ref}~\mathsf{null}~{\mathit{ht}}) \\ -& & | & \begin{array}[t]{@{}l@{}} \mathtt{0xFB}~~24{:}{\mathtt{u32}}~~({{\mathsf{null}}_1^?}, {{\mathsf{null}}_2^?}){:}{\mathtt{castop}} \\ - l{:}{\mathtt{labelidx}}~~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~~{\mathit{ht}}_2{:}{\mathtt{heaptype}} \end{array} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_cast}~l~(\mathsf{ref}~{{\mathsf{null}}_1^?}~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}}_2^?}~{\mathit{ht}}_2) \\ -& & | & \begin{array}[t]{@{}l@{}} \mathtt{0xFB}~~25{:}{\mathtt{u32}}~~({{\mathsf{null}}_1^?}, {{\mathsf{null}}_2^?}){:}{\mathtt{castop}} \\ - l{:}{\mathtt{labelidx}}~~{\mathit{ht}}_1{:}{\mathtt{heaptype}}~~{\mathit{ht}}_2{:}{\mathtt{heaptype}} \end{array} & \quad\Rightarrow\quad{} & \mathsf{br\_on\_cast\_fail}~l~(\mathsf{ref}~{{\mathsf{null}}_1^?}~{\mathit{ht}}_1)~(\mathsf{ref}~{{\mathsf{null}}_2^?}~{\mathit{ht}}_2) \\ & & | & \mathtt{0xFB}~~26{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{any{.}convert\_extern} \\ & & | & \mathtt{0xFB}~~27{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{extern{.}convert\_any} \\ & & | & \mathtt{0xFB}~~28{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{ref{.}i{\scriptstyle 31}} \\ & & | & \mathtt{0xFB}~~29{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{\mathsf{s}} \\ & & | & \mathtt{0xFB}~~30{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 31}{.}get}}{\mathsf{\_}}{\mathsf{u}} \\ -& & | & \dots \\ \end{array} $$ @@ -11663,8 +11865,8 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} & {\mathtt{instr}} & ::= & \dots \\ -& & | & \mathtt{0x41}~~n{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~n \\ -& & | & \mathtt{0x42}~~n{:}{\mathtt{u64}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~n \\ +& & | & \mathtt{0x41}~~i{:}{\mathtt{i32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}}{.}\mathsf{const}~i \\ +& & | & \mathtt{0x42}~~i{:}{\mathtt{i64}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}}{.}\mathsf{const}~i \\ & & | & \mathtt{0x43}~~p{:}{\mathtt{f32}} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}}{.}\mathsf{const}~p \\ & & | & \mathtt{0x44}~~p{:}{\mathtt{f64}} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}}{.}\mathsf{const}~p \\ & & | & \mathtt{0x45} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} {.} \mathsf{eqz} \\ @@ -11770,7 +11972,6 @@ $$ & & | & \mathtt{0xA4} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} \mathsf{min} \\ & & | & \mathtt{0xA5} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} \mathsf{max} \\ & & | & \mathtt{0xA6} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} \mathsf{copysign} \\ -& & | & \dots \\ \end{array} $$ @@ -11799,7 +12000,7 @@ $$ & & | & \mathtt{0xB8} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ & & | & \mathtt{0xB9} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ & & | & \mathtt{0xBA} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ -& & | & \mathtt{0xBB} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} {.} {\mathsf{promote}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ +& & | & \mathtt{0xBB} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {\mathsf{promote}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mathtt{0xBC} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mathtt{0xBD} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mathtt{0xBE} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ @@ -11816,7 +12017,6 @@ $$ & & | & \mathtt{0xFC}~~14{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub{\scriptstyle 128}} \\ & & | & \mathtt{0xFC}~~15{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{s}} \\ & & | & \mathtt{0xFC}~~16{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{u}} \\ -& & | & \dots \\ \end{array} $$ @@ -12074,14 +12274,14 @@ $$ & & | & \mathtt{0xFD}~~249{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mathtt{0xFD}~~250{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mathtt{0xFD}~~251{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ -& & | & \mathtt{0xFD}~~252{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{s}~\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ -& & | & \mathtt{0xFD}~~253{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}~\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ -& & | & \mathtt{0xFD}~~254{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{low}~\mathsf{s}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ -& & | & \mathtt{0xFD}~~255{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{low}~\mathsf{u}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ +& & | & \mathtt{0xFD}~~252{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{s}}{\mathsf{\_}}{\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ +& & | & \mathtt{0xFD}~~253{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}{\mathsf{\_}}{\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ +& & | & \mathtt{0xFD}~~254{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{low}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ +& & | & \mathtt{0xFD}~~255{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}} {.} {{\mathsf{convert}}{\mathsf{\_}}{\mathsf{low}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{{\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mathtt{0xFD}~~257{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ & & | & \mathtt{0xFD}~~258{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}}} \\ -& & | & \mathtt{0xFD}~~259{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{s}~\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ -& & | & \mathtt{0xFD}~~260{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{u}~\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ +& & | & \mathtt{0xFD}~~259{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{s}}{\mathsf{\_}}{\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ +& & | & \mathtt{0xFD}~~260{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & {\mathsf{i{\scriptstyle 32}}}{\mathsf{x}}{\mathsf{{\scriptstyle 4}}} {.} {{\mathsf{relaxed\_trunc}}{\mathsf{\_}}{\mathsf{u}}{\mathsf{\_}}{\mathsf{zero}}}{\mathsf{\_}}{{\mathsf{f{\scriptstyle 64}}}{\mathsf{x}}{\mathsf{{\scriptstyle 2}}}} \\ \end{array} $$ @@ -12198,7 +12398,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -\mbox{(element kind)} & {\mathtt{elemkind}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & \mathsf{ref}~\mathsf{null}~\mathsf{func} \\ +\mbox{(element kind)} & {\mathtt{elemkind}} & ::= & \mathtt{0x00} & \quad\Rightarrow\quad{} & \mathsf{ref}~\mathsf{func} \\ & {\mathtt{elem}} & ::= & 0{:}{\mathtt{u32}}~~e_o{:}{\mathtt{expr}}~~{y^\ast}{:}{\mathtt{list}}({\mathtt{funcidx}}) & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} @@ -12235,10 +12435,10 @@ $$ \mathsf{elem}~{\mathit{rt}}~{e^\ast}~\mathsf{passive} \\ \end{array} } \\ -& & | & 6{:}{\mathtt{u32}}~~x{:}{\mathtt{tableidx}}~~e_{\mathsf{o}}{:}{\mathtt{expr}}~~{e^\ast}{:}{\mathtt{list}}({\mathtt{expr}}) & \quad\Rightarrow\quad{} & & \\ +& & | & 6{:}{\mathtt{u32}}~~x{:}{\mathtt{tableidx}}~~e_{\mathsf{o}}{:}{\mathtt{expr}}~~{\mathit{rt}}{:}{\mathtt{reftype}}~~{e^\ast}{:}{\mathtt{list}}({\mathtt{expr}}) & \quad\Rightarrow\quad{} & & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \begin{array}[t]{@{}l@{}} -\mathsf{elem}~(\mathsf{ref}~\mathsf{null}~\mathsf{func})~{e^\ast}~(\mathsf{active}~x~e_{\mathsf{o}}) \\ +\mathsf{elem}~{\mathit{rt}}~{e^\ast}~(\mathsf{active}~x~e_{\mathsf{o}}) \\ \end{array} } \\ & & | & 7{:}{\mathtt{u32}}~~{\mathit{rt}}{:}{\mathtt{reftype}}~~{e^\ast}{:}{\mathtt{list}}({\mathtt{expr}}) & \quad\Rightarrow\quad{} & & \\ @@ -12363,9 +12563,9 @@ $$ & {\mathtt{uN}} & ::= & \epsilon \\ & {\mathtt{sN}} & ::= & \epsilon \\ & {\mathtt{fN}} & ::= & \epsilon \\ -& {\mathtt{token}} & ::= & {\mathtt{keyword}} ~~|~~ {\mathtt{uN}} ~~|~~ {\mathtt{sN}} ~~|~~ {\mathtt{fN}} ~~|~~ {\mathtt{string}} ~~|~~ {\mathtt{id}} ~~|~~ \mbox{‘}\mathtt{(}\mbox{’} ~~|~~ \mbox{‘}\mathtt{)}\mbox{’} ~~|~~ {\mathtt{reserved}} \\ -& {\mathtt{keyword}} & ::= & (\mbox{‘}\mathtt{a}\mbox{’} ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{z}\mbox{’})~~{{\mathtt{idchar}}^\ast} \\ -& {\mathtt{reserved}} & ::= & {({\mathtt{idchar}} ~~|~~ {\mathtt{string}} ~~|~~ \mbox{‘}\mathtt{,}\mbox{’} ~~|~~ \mbox{‘}\mathtt{;}\mbox{’} ~~|~~ \mbox{‘}\mathtt{{[}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{{]}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\{}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\}}\mbox{’})^{+}} \\ +& {\mathtt{token}} & ::= & {\mathtt{keyword}} ~~|~~ {\mathtt{uN}} ~~|~~ {\mathtt{sN}} ~~|~~ {\mathtt{fN}} ~~|~~ {\mathtt{string}} ~~|~~ {\mathtt{id}} ~~|~~ \mbox{‘\texttt{{(}}’} ~~|~~ \mbox{‘\texttt{{)}}’} ~~|~~ {\mathtt{reserved}} \\ +& {\mathtt{keyword}} & ::= & (\mbox{‘\texttt{a}’} ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{z}’})~~{{\mathtt{idchar}}^\ast} \\ +& {\mathtt{reserved}} & ::= & {({\mathtt{idchar}} ~~|~~ {\mathtt{string}} ~~|~~ \mbox{‘\texttt{,}’} ~~|~~ \mbox{‘\texttt{;}’} ~~|~~ \mbox{‘\texttt{{[}}’} ~~|~~ \mbox{‘\texttt{{]}}’} ~~|~~ \mbox{‘\texttt{{\{}}’} ~~|~~ \mbox{‘\texttt{{\}}}’})^{+}} \\ \end{array} $$ @@ -12373,7 +12573,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{space}} & ::= & {(\mbox{‘}\mathtt{ }\mbox{’} ~~|~~ {\mathtt{format}} ~~|~~ {\mathtt{comment}} ~~|~~ {\mathtt{annot}})^\ast} \\ +& {\mathtt{space}} & ::= & {(\mbox{‘\texttt{ }’} ~~|~~ {\mathtt{format}} ~~|~~ {\mathtt{comment}} ~~|~~ {\mathtt{annot}})^\ast} \\ & {\mathtt{format}} & ::= & {\mathtt{newline}} ~~|~~ \mathrm{U{+}09} \\ & {\mathtt{newline}} & ::= & \mathrm{U{+}0A} ~~|~~ \mathrm{U{+}0D} ~~|~~ \mathrm{U{+}0D}~~\mathrm{U{+}0A} \\ \end{array} @@ -12391,10 +12591,10 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{linecomment}} & ::= & \mbox{‘}\mathtt{;;}\mbox{’}~~{{\mathtt{linechar}}^\ast}~~({\mathtt{newline}} ~~|~~ {\mathtt{eof}}) \\ -& {\mathtt{eof}} & ::= & \mbox{‘}\mathtt{}\mbox{’} \\ +& {\mathtt{linecomment}} & ::= & \mbox{‘\texttt{;;}’}~~{{\mathtt{linechar}}^\ast}~~({\mathtt{newline}} ~~|~~ {\mathtt{eof}}) \\ +& {\mathtt{eof}} & ::= & \mbox{‘\texttt{}’} \\ & {\mathtt{linechar}} & ::= & c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mathrm{U{+}0A} \land c \neq \mathrm{U{+}0D} \\ -& {\mathtt{blockcomment}} & ::= & \mbox{‘}\mathtt{(;}\mbox{’}~~{{\mathtt{blockchar}}^\ast}~~\mbox{‘}\mathtt{;)}\mbox{’} \\ +& {\mathtt{blockcomment}} & ::= & \mbox{‘\texttt{{(};}’}~~{{\mathtt{blockchar}}^\ast}~~\mbox{‘\texttt{;{)}}’} \\ \end{array} $$ @@ -12402,9 +12602,9 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{blockchar}} & ::= & c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘}\mathtt{;}\mbox{’} \land c \neq \mbox{‘}\mathtt{(}\mbox{’} \\ -& & | & {\mbox{‘}\mathtt{;}\mbox{’}^{+}}~~c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘}\mathtt{;}\mbox{’} \land c \neq \mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & {\mbox{‘}\mathtt{(}\mbox{’}^{+}}~~c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘}\mathtt{;}\mbox{’} \land c \neq \mbox{‘}\mathtt{(}\mbox{’} \\ +& {\mathtt{blockchar}} & ::= & c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘\texttt{;}’} \land c \neq \mbox{‘\texttt{{(}}’} \\ +& & | & {\mbox{‘\texttt{;}’}^{+}}~~c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘\texttt{;}’} \land c \neq \mbox{‘\texttt{{)}}’} \\ +& & | & {\mbox{‘\texttt{{(}}’}^{+}}~~c{:}{\mathtt{char}} & \quad \mbox{if}~ c \neq \mbox{‘\texttt{;}’} \land c \neq \mbox{‘\texttt{{(}}’} \\ & & | & {\mathtt{blockcomment}} \\ \end{array} $$ @@ -12413,7 +12613,7 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{annot}} & ::= & \mbox{‘}\mathtt{(@}\mbox{’}~~{\mathtt{annotid}}~~{({\mathtt{space}} ~~|~~ {\mathtt{token}})^\ast}~~\mbox{‘}\mathtt{)}\mbox{’} \\ +& {\mathtt{annot}} & ::= & \mbox{‘\texttt{{(}@}’}~~{\mathtt{annotid}}~~{({\mathtt{space}} ~~|~~ {\mathtt{token}})^\ast}~~\mbox{‘\texttt{{)}}’} \\ & {\mathtt{annotid}} & ::= & {{\mathtt{idchar}}^{+}} ~~|~~ {\mathtt{name}} \\ \end{array} $$ @@ -12422,17 +12622,17 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{sign}} & ::= & \epsilon ~\Rightarrow~ {+1} ~~|~~ \mbox{‘}\mathtt{+}\mbox{’} ~\Rightarrow~ {+1} ~~|~~ \mbox{‘}\mathtt{\mbox{-}}\mbox{’} ~\Rightarrow~ {-1} \\ -& {\mathtt{digit}} & ::= & \mbox{‘}\mathtt{0}\mbox{’} ~\Rightarrow~ 0 ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{9}\mbox{’} ~\Rightarrow~ 9 \\ +& {\mathtt{sign}} & ::= & \epsilon ~\Rightarrow~ {+1} ~~|~~ \mbox{‘\texttt{+}’} ~\Rightarrow~ {+1} ~~|~~ \mbox{‘\texttt{{-}}’} ~\Rightarrow~ {-1} \\ +& {\mathtt{digit}} & ::= & \mbox{‘\texttt{0}’} ~\Rightarrow~ 0 ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{9}’} ~\Rightarrow~ 9 \\ & {\mathtt{hexdigit}} & ::= & d{:}{\mathtt{digit}} ~\Rightarrow~ d \\ -& & | & \mbox{‘}\mathtt{A}\mbox{’} ~\Rightarrow~ 10 ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{F}\mbox{’} ~\Rightarrow~ 15 \\ -& & | & \mbox{‘}\mathtt{a}\mbox{’} ~\Rightarrow~ 10 ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{f}\mbox{’} ~\Rightarrow~ 15 \\ +& & | & \mbox{‘\texttt{A}’} ~\Rightarrow~ 10 ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{F}’} ~\Rightarrow~ 15 \\ +& & | & \mbox{‘\texttt{a}’} ~\Rightarrow~ 10 ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{f}’} ~\Rightarrow~ 15 \\ & {\mathtt{num}} & ::= & d{:}{\mathtt{digit}} & \quad\Rightarrow\quad{} & d \\ -& & | & n{:}{\mathtt{num}}~~{\mbox{‘}\mathtt{\_}\mbox{’}^?}~~d{:}{\mathtt{digit}} & \quad\Rightarrow\quad{} & 10 \, n + d \\ +& & | & n{:}{\mathtt{num}}~~{\mbox{‘\texttt{\_}’}^?}~~d{:}{\mathtt{digit}} & \quad\Rightarrow\quad{} & 10 \, n + d \\ & {\mathtt{hexnum}} & ::= & h{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & h \\ -& & | & n{:}{\mathtt{hexnum}}~~{\mbox{‘}\mathtt{\_}\mbox{’}^?}~~h{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & 16 \, n + h \\ +& & | & n{:}{\mathtt{hexnum}}~~{\mbox{‘\texttt{\_}’}^?}~~h{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & 16 \, n + h \\ & {{\mathtt{u}}}{N} & ::= & n{:}{\mathtt{num}} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < {2^{N}} \\ -& & | & \mbox{‘}\mathtt{0x}\mbox{’}~~n{:}{\mathtt{hexnum}} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < {2^{N}} \\ +& & | & \mbox{‘\texttt{0x}’}~~n{:}{\mathtt{hexnum}} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < {2^{N}} \\ & {{\mathtt{s}}}{N} & ::= & s{:}{\mathtt{sign}}~~n{:}{{\mathtt{u}}}{N} & \quad\Rightarrow\quad{} & s \cdot n & \quad \mbox{if}~ {-{2^{N - 1}}} \leq s \cdot n < {2^{N - 1}} \\ & {{\mathtt{i}}}{N} & ::= & n{:}{{\mathtt{u}}}{N} & \quad\Rightarrow\quad{} & n \\ & & | & i{:}{{\mathtt{s}}}{N} & \quad\Rightarrow\quad{} & {{{{\mathrm{signed}}}_{N}^{{-1}}}}{(i)} \\ @@ -12444,25 +12644,25 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} & {\mathtt{frac}} & ::= & d{:}{\mathtt{digit}} & \quad\Rightarrow\quad{} & d / 10 \\ -& & | & d{:}{\mathtt{digit}}~~{\mbox{‘}\mathtt{\_}\mbox{’}^?}~~p{:}{\mathtt{frac}} & \quad\Rightarrow\quad{} & (d + p / 10) / 10 \\ +& & | & d{:}{\mathtt{digit}}~~{\mbox{‘\texttt{\_}’}^?}~~p{:}{\mathtt{frac}} & \quad\Rightarrow\quad{} & (d + p / 10) / 10 \\ & {\mathtt{hexfrac}} & ::= & h{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & h / 16 \\ -& & | & h{:}{\mathtt{hexdigit}}~~{\mbox{‘}\mathtt{\_}\mbox{’}^?}~~p{:}{\mathtt{hexfrac}} & \quad\Rightarrow\quad{} & (h + p / 16) / 16 \\ -& {\mathtt{mant}} & ::= & p{:}{\mathtt{num}}~~{\mbox{‘}\mathtt{.}\mbox{’}^?} & \quad\Rightarrow\quad{} & p \\ -& & | & p{:}{\mathtt{num}}~~\mbox{‘}\mathtt{.}\mbox{’}~~q{:}{\mathtt{frac}} & \quad\Rightarrow\quad{} & p + q \\ -& {\mathtt{hexmant}} & ::= & p{:}{\mathtt{hexnum}}~~{\mbox{‘}\mathtt{.}\mbox{’}^?} & \quad\Rightarrow\quad{} & p \\ -& & | & p{:}{\mathtt{hexnum}}~~\mbox{‘}\mathtt{.}\mbox{’}~~q{:}{\mathtt{hexfrac}} & \quad\Rightarrow\quad{} & p + q \\ +& & | & h{:}{\mathtt{hexdigit}}~~{\mbox{‘\texttt{\_}’}^?}~~p{:}{\mathtt{hexfrac}} & \quad\Rightarrow\quad{} & (h + p / 16) / 16 \\ +& {\mathtt{mant}} & ::= & p{:}{\mathtt{num}}~~{\mbox{‘\texttt{.}’}^?} & \quad\Rightarrow\quad{} & p \\ +& & | & p{:}{\mathtt{num}}~~\mbox{‘\texttt{.}’}~~q{:}{\mathtt{frac}} & \quad\Rightarrow\quad{} & p + q \\ +& {\mathtt{hexmant}} & ::= & p{:}{\mathtt{hexnum}}~~{\mbox{‘\texttt{.}’}^?} & \quad\Rightarrow\quad{} & p \\ +& & | & p{:}{\mathtt{hexnum}}~~\mbox{‘\texttt{.}’}~~q{:}{\mathtt{hexfrac}} & \quad\Rightarrow\quad{} & p + q \\ \end{array} $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{float}} & ::= & p{:}{\mathtt{mant}}~~(\mbox{‘}\mathtt{E}\mbox{’} ~~|~~ \mbox{‘}\mathtt{e}\mbox{’})~~s{:}{\mathtt{sign}}~~e{:}{\mathtt{num}} & \quad\Rightarrow\quad{} & p \cdot {10^{s \cdot e}} \\ -& {\mathtt{hexfloat}} & ::= & \mbox{‘}\mathtt{0x}\mbox{’}~~p{:}{\mathtt{hexmant}}~~(\mbox{‘}\mathtt{P}\mbox{’} ~~|~~ \mbox{‘}\mathtt{p}\mbox{’})~~s{:}{\mathtt{sign}}~~e{:}{\mathtt{num}} & \quad\Rightarrow\quad{} & p \cdot {2^{s \cdot e}} \\ +& {\mathtt{float}} & ::= & p{:}{\mathtt{mant}}~~(\mbox{‘\texttt{E}’} ~~|~~ \mbox{‘\texttt{e}’})~~s{:}{\mathtt{sign}}~~e{:}{\mathtt{num}} & \quad\Rightarrow\quad{} & p \cdot {10^{s \cdot e}} \\ +& {\mathtt{hexfloat}} & ::= & \mbox{‘\texttt{0x}’}~~p{:}{\mathtt{hexmant}}~~(\mbox{‘\texttt{P}’} ~~|~~ \mbox{‘\texttt{p}’})~~s{:}{\mathtt{sign}}~~e{:}{\mathtt{num}} & \quad\Rightarrow\quad{} & p \cdot {2^{s \cdot e}} \\ & {\mathtt{fNmag}} & ::= & q{:}{\mathtt{float}} & \quad\Rightarrow\quad{} & {{\mathrm{ieee}}}_{N}(q) & \quad \mbox{if}~ {{\mathrm{ieee}}}_{N}(q) \neq \infty \\ & & | & q{:}{\mathtt{hexfloat}} & \quad\Rightarrow\quad{} & {{\mathrm{ieee}}}_{N}(q) & \quad \mbox{if}~ {{\mathrm{ieee}}}_{N}(q) \neq \infty \\ -& & | & \mbox{‘}\mathtt{inf}\mbox{’} & \quad\Rightarrow\quad{} & \infty \\ -& & | & \mbox{‘}\mathtt{nan}\mbox{’} & \quad\Rightarrow\quad{} & {\mathsf{nan}}{({{\mathrm{canon}}}_{N})} \\ -& & | & \mbox{‘}\mathtt{nan:0x}\mbox{’}~~n{:}{\mathtt{hexnum}} & \quad\Rightarrow\quad{} & {\mathsf{nan}}{(n)} & \quad \mbox{if}~ 1 \leq n < {2^{{\mathrm{signif}}(N)}} \\ +& & | & \mbox{‘\texttt{inf}’} & \quad\Rightarrow\quad{} & \infty \\ +& & | & \mbox{‘\texttt{nan}’} & \quad\Rightarrow\quad{} & {\mathsf{nan}}{({{\mathrm{canon}}}_{N})} \\ +& & | & \mbox{‘\texttt{nan:0x}’}~~n{:}{\mathtt{hexnum}} & \quad\Rightarrow\quad{} & {\mathsf{nan}}{(n)} & \quad \mbox{if}~ 1 \leq n < {2^{{\mathrm{signif}}(N)}} \\ & {{\mathtt{f}}}{N} & ::= & ({+1}){:}{\mathtt{sign}}~~q{:}{\mathtt{fNmag}} & \quad\Rightarrow\quad{} & {+q} \\ & & | & ({-1}){:}{\mathtt{sign}}~~q{:}{\mathtt{fNmag}} & \quad\Rightarrow\quad{} & {-q} \\ \end{array} @@ -12479,7 +12679,6 @@ $$ & {\mathtt{i16}} & ::= & {{\mathtt{i}}}{\mathsf{{\scriptstyle 16}}} \\ & {\mathtt{i32}} & ::= & {{\mathtt{i}}}{\mathsf{{\scriptstyle 32}}} \\ & {\mathtt{i64}} & ::= & {{\mathtt{i}}}{\mathsf{{\scriptstyle 64}}} \\ -& {\mathtt{i128}} & ::= & {{\mathtt{i}}}{\mathsf{{\scriptstyle 128}}} \\ & {\mathtt{f32}} & ::= & {{\mathtt{f}}}{\mathsf{{\scriptstyle 32}}} \\ & {\mathtt{f64}} & ::= & {{\mathtt{f}}}{\mathsf{{\scriptstyle 64}}} \\ \end{array} @@ -12489,17 +12688,17 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{stringchar}} & ::= & c{:}{\mathtt{char}} & \quad\Rightarrow\quad{} & c & \quad \mbox{if}~ c \geq \mathrm{U{+}20} \land c \neq \mathrm{U{+}7F} \land c \neq \mbox{‘}\mathtt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}\mbox{’} \land c \neq \mbox{‘}\mathtt{\backslash{}}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{\backslash{}t}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}09} \\ -& & | & \mbox{‘}\mathtt{\backslash{}n}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}0A} \\ -& & | & \mbox{‘}\mathtt{\backslash{}r}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}0D} \\ -& & | & \mbox{‘}\mathtt{\backslash{}\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}22} \\ -& & | & \mbox{‘}\mathtt{\backslash{}\kern0.03em{'}\kern0.03em}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}27} \\ -& & | & \mbox{‘}\mathtt{\backslash{}\backslash{}}\mbox{’} & \quad\Rightarrow\quad{} & \mathrm{U{+}5C} \\ -& & | & \mbox{‘}\mathtt{\backslash{}u\{}\mbox{’}~~n{:}{\mathtt{hexnum}}~~\mbox{‘}\mathtt{\}}\mbox{’} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < \mathtt{0xD800} \lor \mathtt{0xE800} \leq n < \mathtt{0x110000} \\ +& {\mathtt{stringchar}} & ::= & c{:}{\mathtt{char}} & \quad\Rightarrow\quad{} & c & \quad \mbox{if}~ c \geq \mathrm{U{+}20} \land c \neq \mathrm{U{+}7F} \land c \neq \mbox{‘\texttt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}’} \land c \neq \mbox{‘\texttt{\(\mathtt{\backslash}\)}’} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)t}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}09} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)n}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}0A} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)r}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}0D} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}22} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)\kern0.03em{'}\kern0.03em}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}27} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)\(\mathtt{\backslash}\)}’} & \quad\Rightarrow\quad{} & \mathrm{U{+}5C} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)u{\{}}’}~~n{:}{\mathtt{hexnum}}~~\mbox{‘\texttt{{\}}}’} & \quad\Rightarrow\quad{} & n & \quad \mbox{if}~ n < \mathtt{0xD800} \lor \mathtt{0xE800} \leq n < \mathtt{0x110000} \\ & {\mathtt{stringelem}} & ::= & c{:}{\mathtt{stringchar}} & \quad\Rightarrow\quad{} & {\mathrm{utf{\kern-0.1em\scriptstyle 8}}}(c) \\ -& & | & \mbox{‘}\mathtt{\backslash{}}\mbox{’}~~h_1{:}{\mathtt{hexdigit}}~~h_2{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & 16 \, h_1 + h_2 \\ -& {\mathtt{string}} & ::= & \mbox{‘}\mathtt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}\mbox{’}~~{({b^\ast}{:}{\mathtt{stringelem}})^\ast}~~\mbox{‘}\mathtt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}\mbox{’} & \quad\Rightarrow\quad{} & {\bigoplus}\, {{b^\ast}^\ast} & \quad \mbox{if}~ {|{\bigoplus}\, {{b^\ast}^\ast}|} < {2^{32}} \\ +& & | & \mbox{‘\texttt{\(\mathtt{\backslash}\)}’}~~h_1{:}{\mathtt{hexdigit}}~~h_2{:}{\mathtt{hexdigit}} & \quad\Rightarrow\quad{} & 16 \, h_1 + h_2 \\ +& {\mathtt{string}} & ::= & \mbox{‘\texttt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}’}~~{({b^\ast}{:}{\mathtt{stringelem}})^\ast}~~\mbox{‘\texttt{\kern-0.02em{'}\kern-0.05em{'}\kern-0.02em}’} & \quad\Rightarrow\quad{} & {\bigoplus}\, {{b^\ast}^\ast} & \quad \mbox{if}~ {|{\bigoplus}\, {{b^\ast}^\ast}|} < {2^{32}} \\ \end{array} $$ @@ -12523,13 +12722,13 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{idchar}} & ::= & \mbox{‘}\mathtt{0}\mbox{’} ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{9}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{A}\mbox{’} ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{Z}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{a}\mbox{’} ~~|~~ \ldots ~~|~~ \mbox{‘}\mathtt{z}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{!}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\#}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\$}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\%}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\&}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\kern0.03em{'}\kern0.03em}\mbox{’} ~~|~~ \mbox{‘}\mathtt{*}\mbox{’} ~~|~~ \mbox{‘}\mathtt{+}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\mbox{-}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{.}\mbox{’} ~~|~~ \mbox{‘}\mathtt{/}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{:}\mbox{’} ~~|~~ \mbox{‘}\mathtt{<}\mbox{’} ~~|~~ \mbox{‘}\mathtt{=}\mbox{’} ~~|~~ \mbox{‘}\mathtt{>}\mbox{’} ~~|~~ \mbox{‘}\mathtt{?}\mbox{’} ~~|~~ \mbox{‘}\mathtt{@}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\backslash{}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\hat{~~}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\_}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\grave{~~}}\mbox{’} ~~|~~ \mbox{‘}\mathtt{|}\mbox{’} ~~|~~ \mbox{‘}\mathtt{\tilde{~~}}\mbox{’} \\ -& {\mathtt{id}} & ::= & \mbox{‘}\mathtt{\$}\mbox{’}~~{c^\ast}{:}{{\mathtt{idchar}}^{+}} & \quad\Rightarrow\quad{} & {c^\ast} \\ -& & | & \mbox{‘}\mathtt{\$}\mbox{’}~~{c^\ast}{:}{\mathtt{name}} & \quad\Rightarrow\quad{} & {c^\ast} & \quad \mbox{if}~ {|{c^\ast}|} > 0 \\ +& {\mathtt{idchar}} & ::= & \mbox{‘\texttt{0}’} ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{9}’} \\ +& & | & \mbox{‘\texttt{A}’} ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{Z}’} \\ +& & | & \mbox{‘\texttt{a}’} ~~|~~ \ldots ~~|~~ \mbox{‘\texttt{z}’} \\ +& & | & \mbox{‘\texttt{!}’} ~~|~~ \mbox{‘\texttt{\#}’} ~~|~~ \mbox{‘\texttt{\$}’} ~~|~~ \mbox{‘\texttt{\%}’} ~~|~~ \mbox{‘\texttt{\&}’} ~~|~~ \mbox{‘\texttt{\kern0.03em{'}\kern0.03em}’} ~~|~~ \mbox{‘\texttt{*}’} ~~|~~ \mbox{‘\texttt{+}’} ~~|~~ \mbox{‘\texttt{{-}}’} ~~|~~ \mbox{‘\texttt{.}’} ~~|~~ \mbox{‘\texttt{/}’} \\ +& & | & \mbox{‘\texttt{:}’} ~~|~~ \mbox{‘\texttt{{<}}’} ~~|~~ \mbox{‘\texttt{{=}}’} ~~|~~ \mbox{‘\texttt{{>}}’} ~~|~~ \mbox{‘\texttt{?}’} ~~|~~ \mbox{‘\texttt{@}’} ~~|~~ \mbox{‘\texttt{\(\mathtt{\backslash}\)}’} ~~|~~ \mbox{‘\texttt{\(\mathtt{\hat{~~}}\)}’} ~~|~~ \mbox{‘\texttt{\_}’} ~~|~~ \mbox{‘\texttt{\(\mathtt{\grave{~~}}\)}’} ~~|~~ \mbox{‘\texttt{|}’} ~~|~~ \mbox{‘\texttt{\(\mathtt{\tilde{~~}}\)}’} \\ +& {\mathtt{id}} & ::= & \mbox{‘\texttt{\$}’}~~{c^\ast}{:}{{\mathtt{idchar}}^{+}} & \quad\Rightarrow\quad{} & {c^\ast} \\ +& & | & \mbox{‘\texttt{\$}’}~~{c^\ast}{:}{\mathtt{name}} & \quad\Rightarrow\quad{} & {c^\ast} & \quad \mbox{if}~ {|{c^\ast}|} > 0 \\ \end{array} $$ @@ -12549,7 +12748,7 @@ $$ \mathsf{locals}~{({{\mathit{name}}^?})^\ast} \\ \mathsf{labels}~{({{\mathit{name}}^?})^\ast} \\ \mathsf{fields}~{({({{\mathit{name}}^?})^\ast})^\ast} \\ -\mathsf{typedefs}~{({{\mathit{subtype}}^?})^\ast} \} \\ +\mathsf{typedefs}~{({{\mathit{deftype}}^?})^\ast} \} \\ \end{array} \\ & I & ::= & {\mathit{idctxt}} \\ \end{array} @@ -12557,8 +12756,8 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} -{\mathrm{concat}}_{\mathit{idctxt}}(\epsilon) & = & \{ \} \\ -{\mathrm{concat}}_{\mathit{idctxt}}(I~{I'}) & = & I \oplus {\mathrm{concat}}_{\mathit{idctxt}}({{I'}^\ast}) \\ +{\bigoplus}\, \epsilon & = & \{ \} \\ +{\bigoplus}\, I~{{I'}^\ast} & = & I \oplus {\bigoplus}\, {{I'}^\ast} \\ \end{array} $$ @@ -12616,11 +12815,11 @@ $$ & {{\mathtt{localidx}}}_{I} & ::= & {{\mathtt{idx}}}_{I{.}\mathsf{locals}} \\ & {{\mathtt{labelidx}}}_{I} & ::= & {{\mathtt{idx}}}_{I{.}\mathsf{labels}} \\ & {{\mathtt{fieldidx}}}_{I, x} & ::= & {{\mathtt{idx}}}_{I{.}\mathsf{fields}{}[x]} \\ -& {{\mathtt{externidx}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{tag}\mbox{’}~~x{:}{{\mathtt{tagidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{tag}~x \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{global}\mbox{’}~~x{:}{{\mathtt{globalidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{global}~x \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{memory}\mbox{’}~~x{:}{{\mathtt{memidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{mem}~x \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{table}\mbox{’}~~x{:}{{\mathtt{tableidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{table}~x \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{func}\mbox{’}~~x{:}{{\mathtt{funcidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{func}~x \\ +& {{\mathtt{externidx}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{tag}’}~~x{:}{{\mathtt{tagidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{tag}~x \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{global}’}~~x{:}{{\mathtt{globalidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{global}~x \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{memory}’}~~x{:}{{\mathtt{memidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{mem}~x \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{table}’}~~x{:}{{\mathtt{tableidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{table}~x \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{func}’}~~x{:}{{\mathtt{funcidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{func}~x \\ \end{array} $$ @@ -12628,11 +12827,11 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{numtype}} & ::= & \mbox{‘}\mathtt{i32}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} \\ -& & | & \mbox{‘}\mathtt{i64}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} \\ -& & | & \mbox{‘}\mathtt{f32}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} \\ -& & | & \mbox{‘}\mathtt{f64}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} \\ -& {\mathtt{vectype}} & ::= & \mbox{‘}\mathtt{v128}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{v{\scriptstyle 128}} \\ +& {\mathtt{numtype}} & ::= & \mbox{‘\texttt{i32}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} \\ +& & | & \mbox{‘\texttt{i64}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} \\ +& & | & \mbox{‘\texttt{f32}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} \\ +& & | & \mbox{‘\texttt{f64}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} \\ +& {\mathtt{vectype}} & ::= & \mbox{‘\texttt{v128}’} & \quad\Rightarrow\quad{} & \mathsf{v{\scriptstyle 128}} \\ \end{array} $$ @@ -12640,34 +12839,34 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{absheaptype}} & ::= & \mbox{‘}\mathtt{any}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{any} \\ -& & | & \mbox{‘}\mathtt{eq}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{eq} \\ -& & | & \mbox{‘}\mathtt{i31}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 31}} \\ -& & | & \mbox{‘}\mathtt{struct}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{struct} \\ -& & | & \mbox{‘}\mathtt{array}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{array} \\ -& & | & \mbox{‘}\mathtt{none}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{none} \\ -& & | & \mbox{‘}\mathtt{func}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{func} \\ -& & | & \mbox{‘}\mathtt{nofunc}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{nofunc} \\ -& & | & \mbox{‘}\mathtt{exn}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{exn} \\ -& & | & \mbox{‘}\mathtt{noexn}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{noexn} \\ -& & | & \mbox{‘}\mathtt{extern}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{extern} \\ -& & | & \mbox{‘}\mathtt{noextern}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{noextern} \\ +& {\mathtt{absheaptype}} & ::= & \mbox{‘\texttt{any}’} & \quad\Rightarrow\quad{} & \mathsf{any} \\ +& & | & \mbox{‘\texttt{eq}’} & \quad\Rightarrow\quad{} & \mathsf{eq} \\ +& & | & \mbox{‘\texttt{i31}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 31}} \\ +& & | & \mbox{‘\texttt{struct}’} & \quad\Rightarrow\quad{} & \mathsf{struct} \\ +& & | & \mbox{‘\texttt{array}’} & \quad\Rightarrow\quad{} & \mathsf{array} \\ +& & | & \mbox{‘\texttt{none}’} & \quad\Rightarrow\quad{} & \mathsf{none} \\ +& & | & \mbox{‘\texttt{func}’} & \quad\Rightarrow\quad{} & \mathsf{func} \\ +& & | & \mbox{‘\texttt{nofunc}’} & \quad\Rightarrow\quad{} & \mathsf{nofunc} \\ +& & | & \mbox{‘\texttt{exn}’} & \quad\Rightarrow\quad{} & \mathsf{exn} \\ +& & | & \mbox{‘\texttt{noexn}’} & \quad\Rightarrow\quad{} & \mathsf{noexn} \\ +& & | & \mbox{‘\texttt{extern}’} & \quad\Rightarrow\quad{} & \mathsf{extern} \\ +& & | & \mbox{‘\texttt{noextern}’} & \quad\Rightarrow\quad{} & \mathsf{noextern} \\ & {{\mathtt{heaptype}}}_{I} & ::= & {\mathit{ht}}{:}{\mathtt{absheaptype}} & \quad\Rightarrow\quad{} & {\mathit{ht}} \\ & & | & x{:}{{\mathtt{typeidx}}}_{I} & \quad\Rightarrow\quad{} & x \\ -& {\mathtt{null}} & ::= & \mbox{‘}\mathtt{null}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{null} \\ -& {{\mathtt{reftype}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~{\mathsf{null}^?}{:}{{\mathtt{null}}^?}~~{\mathit{ht}}{:}{{\mathtt{heaptype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{ref}~{\mathsf{null}^?}~{\mathit{ht}} \\ -& & | & \mbox{‘}\mathtt{anyref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{any}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{eqref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{eq}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{i31ref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{i31}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{structref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{struct}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{arrayref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{array}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{nullref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{none}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{funcref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{func}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{nullfuncref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{nofunc}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{exnref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{exn}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{nullexnref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{noexn}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{externref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{extern}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& & | & \mbox{‘}\mathtt{nullexternref}\mbox{’} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{ref}\mbox{’}~~\mbox{‘}\mathtt{null}\mbox{’}~~\mbox{‘}\mathtt{noextern}\mbox{’}~~\mbox{‘}\mathtt{)}\mbox{’} \\ +& {\mathtt{null}} & ::= & \mbox{‘\texttt{null}’} & \quad\Rightarrow\quad{} & \mathsf{null} \\ +& {{\mathtt{reftype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~{\mathsf{null}^?}{:}{{\mathtt{null}}^?}~~{\mathit{ht}}{:}{{\mathtt{heaptype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{ref}~{\mathsf{null}^?}~{\mathit{ht}} \\ +& & | & \mbox{‘\texttt{anyref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{any}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{eqref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{eq}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{i31ref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{i31}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{structref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{struct}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{arrayref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{array}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{nullref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{none}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{funcref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{func}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{nullfuncref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{nofunc}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{exnref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{exn}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{nullexnref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{noexn}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{externref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{extern}’}~~\mbox{‘\texttt{{)}}’} \\ +& & | & \mbox{‘\texttt{nullexternref}’} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{ref}’}~~\mbox{‘\texttt{null}’}~~\mbox{‘\texttt{noextern}’}~~\mbox{‘\texttt{{)}}’} \\ & {{\mathtt{valtype}}}_{I} & ::= & {\mathit{nt}}{:}{\mathtt{numtype}} & \quad\Rightarrow\quad{} & {\mathit{nt}} \\ & & | & {\mathit{vt}}{:}{\mathtt{vectype}} & \quad\Rightarrow\quad{} & {\mathit{vt}} \\ & & | & {\mathit{rt}}{:}{{\mathtt{reftype}}}_{I} & \quad\Rightarrow\quad{} & {\mathit{rt}} \\ @@ -12678,21 +12877,21 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{packtype}} & ::= & \mbox{‘}\mathtt{i8}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 8}} \\ -& & | & \mbox{‘}\mathtt{i16}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 16}} \\ +& {\mathtt{packtype}} & ::= & \mbox{‘\texttt{i8}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 8}} \\ +& & | & \mbox{‘\texttt{i16}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 16}} \\ & {{\mathtt{storagetype}}}_{I} & ::= & t{:}{{\mathtt{valtype}}}_{I} & \quad\Rightarrow\quad{} & t \\ & & | & {\mathit{pt}}{:}{\mathtt{packtype}} & \quad\Rightarrow\quad{} & {\mathit{pt}} \\ & {{\mathtt{fieldtype}}}_{I} & ::= & {\mathit{zt}}{:}{{\mathtt{storagetype}}}_{I} & \quad\Rightarrow\quad{} & {\mathit{zt}} \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{mut}\mbox{’}~~{\mathit{zt}}{:}{{\mathtt{storagetype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{mut}~{\mathit{zt}} \\ -& {{\mathtt{field}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{field}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & ({\mathit{ft}}, {{\mathit{id}}^?}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{field}\mbox{’}~~{{{\mathtt{fieldtype}}}_{I}^\ast}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\equiv\quad{} & {(\mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{field}\mbox{’}~~{{\mathtt{fieldtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’})^\ast} \\ -& {{\mathtt{param}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{param}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (t, {{\mathit{id}}^?}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{param}\mbox{’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\equiv\quad{} & {(\mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{param}\mbox{’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’})^\ast} \\ -& {{\mathtt{result}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{result}\mbox{’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & t \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{result}\mbox{’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\equiv\quad{} & {(\mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{param}\mbox{’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’})^\ast} \\ -& {{\mathtt{comptype}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{struct}\mbox{’}~~{({\mathit{ft}}, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{field}}}_{I})~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{struct}~{{\mathit{ft}}^\ast}, \{ \mathsf{fields}~{({{\mathit{id}}^?})^\ast} \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{array}\mbox{’}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{array}~{\mathit{ft}}, \{ \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{func}\mbox{’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{param}}}_{I})~~{t_2^\ast}{:}{\mathtt{list}}({{\mathtt{result}}}_{I})~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}, \{ \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{mut}’}~~{\mathit{zt}}{:}{{\mathtt{storagetype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{mut}~{\mathit{zt}} \\ +& {{\mathtt{field}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{field}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & ({\mathit{ft}}, {{\mathit{id}}^?}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{field}’}~~{{{\mathtt{fieldtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{field}’}~~{{\mathtt{fieldtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +& {{\mathtt{param}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (t, {{\mathit{id}}^?}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{param}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +& {{\mathtt{result}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & t \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~{{{\mathtt{valtype}}}_{I}^\ast}~~\mbox{‘\texttt{{)}}’} & \quad\equiv\quad{} & {(\mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{result}’}~~{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’})^\ast} \\ +& {{\mathtt{comptype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{struct}’}~~{({\mathit{ft}}, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{field}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{struct}~{{\mathit{ft}}^\ast}, \{ \mathsf{fields}~({({{\mathit{id}}^?})^\ast}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{array}’}~~{\mathit{ft}}{:}{{\mathtt{fieldtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{array}~{\mathit{ft}}, \{ \mathsf{fields}~(\epsilon) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{func}’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{\mathtt{list}}({{\mathtt{param}}}_{I})~~{t_2^\ast}{:}{\mathtt{list}}({{\mathtt{result}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}, \{ \mathsf{fields}~(\epsilon) \}) \\ \end{array} $$ @@ -12700,12 +12899,12 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{final}} & ::= & \mbox{‘}\mathtt{final}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{final} \\ -& {{\mathtt{subtype}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{sub}\mbox{’}~~{{\mathit{fin}}^?}{:}{{\mathtt{final}}^?}~~{x^\ast}{:}{\mathtt{list}}({{\mathtt{typeidx}}}_{I})~~({\mathit{ct}}, {I'}){:}{{\mathtt{comptype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{sub}~{{\mathit{fin}}^?}~{x^\ast}~{\mathit{ct}}, {I'}) \\ -& & | & {{\mathtt{comptype}}}_{I} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{sub}\mbox{’}~~\mbox{‘}\mathtt{final}\mbox{’}~~{{\mathtt{comptype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} \\ -& {{\mathtt{typedef}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{type}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~({\mathit{st}}, {I'}){:}{{\mathtt{subtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & ({\mathit{st}}, {I'} \oplus \{ \mathsf{types}~({{\mathit{id}}^?}) \}) \\ -& {{\mathtt{rectype}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{rec}\mbox{’}~~{({\mathit{st}}, {I'})^\ast}{:}{\mathtt{list}}({{\mathtt{typedef}}}_{I})~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{rec}~{{\mathit{st}}^\ast}, {\mathrm{concat}}_{\mathit{idctxt}}({{I'}^\ast})) \\ -& & | & {{\mathtt{typedef}}}_{I} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{rec}\mbox{’}~~{{\mathtt{typedef}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} \\ +& {\mathtt{final}} & ::= & \mbox{‘\texttt{final}’} & \quad\Rightarrow\quad{} & \mathsf{final} \\ +& {{\mathtt{subtype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{sub}’}~~{{\mathit{fin}}^?}{:}{{\mathtt{final}}^?}~~{x^\ast}{:}{\mathtt{list}}({{\mathtt{typeidx}}}_{I})~~({\mathit{ct}}, {I'}){:}{{\mathtt{comptype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{sub}~{{\mathit{fin}}^?}~{x^\ast}~{\mathit{ct}}, {I'}) \\ +& & | & {{\mathtt{comptype}}}_{I} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{sub}’}~~\mbox{‘\texttt{final}’}~~{{\mathtt{comptype}}}_{I}~~\mbox{‘\texttt{{)}}’} \\ +& {{\mathtt{typedef}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{type}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~({\mathit{st}}, {I'}){:}{{\mathtt{subtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & ({\mathit{st}}, {I'} \oplus \{ \mathsf{types}~({{\mathit{id}}^?}) \}) \\ +& {{\mathtt{rectype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{rec}’}~~{({\mathit{st}}, {I'})^\ast}{:}{\mathtt{list}}({{\mathtt{typedef}}}_{I})~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{rec}~{{\mathit{st}}^\ast}, {\bigoplus}\, {{I'}^\ast}) \\ +& & | & {{\mathtt{typedef}}}_{I} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{rec}’}~~{{\mathtt{typedef}}}_{I}~~\mbox{‘\texttt{{)}}’} \\ \end{array} $$ @@ -12713,9 +12912,9 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {\mathtt{addrtype}} & ::= & \mbox{‘}\mathtt{i32}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} \\ -& & | & \mbox{‘}\mathtt{i64}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} \\ -& & | & \epsilon & \quad\equiv\quad{} & \mbox{‘}\mathtt{i32}\mbox{’} \\ +& {\mathtt{addrtype}} & ::= & \mbox{‘\texttt{i32}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 32}} \\ +& & | & \mbox{‘\texttt{i64}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} \\ +& & | & \epsilon & \quad\equiv\quad{} & \mbox{‘\texttt{i32}’} \\ \end{array} $$ @@ -12734,7 +12933,7 @@ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} & {{\mathtt{tagtype}}}_{I} & ::= & (x, {I'}){:}{{\mathtt{typeuse}}}_{I} & \quad\Rightarrow\quad{} & x \\ & {{\mathtt{globaltype}}}_{I} & ::= & t{:}{{\mathtt{valtype}}}_{I} & \quad\Rightarrow\quad{} & t \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{mut}\mbox{’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & \mathsf{mut}~t \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{mut}’}~~t{:}{{\mathtt{valtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & \mathsf{mut}~t \\ & {{\mathtt{memtype}}}_{I} & ::= & {\mathit{at}}{:}{\mathtt{addrtype}}~~{\mathit{lim}}{:}{\mathtt{limits}} & \quad\Rightarrow\quad{} & {\mathit{at}}~{\mathit{lim}}~\mathsf{page} \\ & {{\mathtt{tabletype}}}_{I} & ::= & {\mathit{at}}{:}{\mathtt{addrtype}}~~{\mathit{lim}}{:}{\mathtt{limits}}~~{\mathit{rt}}{:}{{\mathtt{reftype}}}_{I} & \quad\Rightarrow\quad{} & {\mathit{at}}~{\mathit{lim}}~{\mathit{rt}} \\ \end{array} @@ -12744,11 +12943,11 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {{\mathtt{externtype}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{tag}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{jt}}{:}{{\mathtt{tagtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{tag}~{\mathit{jt}}, \{ \mathsf{tags}~({{\mathit{id}}^?}) \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{global}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{gt}}{:}{{\mathtt{globaltype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{global}~{\mathit{gt}}, \{ \mathsf{globals}~({{\mathit{id}}^?}) \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{memory}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{mt}}{:}{{\mathtt{memtype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{mem}~{\mathit{mt}}, \{ \mathsf{mems}~({{\mathit{id}}^?}) \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{table}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{tt}}{:}{{\mathtt{tabletype}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{table}~{\mathit{tt}}, \{ \mathsf{tables}~({{\mathit{id}}^?}) \}) \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{func}\mbox{’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~(x, {I'}){:}{{\mathtt{typeuse}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (\mathsf{func}~x, \{ \mathsf{funcs}~({{\mathit{id}}^?}) \}) \\ +& {{\mathtt{externtype}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{tag}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{jt}}{:}{{\mathtt{tagtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{tag}~{\mathit{jt}}, \{ \mathsf{tags}~({{\mathit{id}}^?}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{global}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{gt}}{:}{{\mathtt{globaltype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{global}~{\mathit{gt}}, \{ \mathsf{globals}~({{\mathit{id}}^?}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{memory}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{mt}}{:}{{\mathtt{memtype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{mem}~{\mathit{mt}}, \{ \mathsf{mems}~({{\mathit{id}}^?}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{table}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~{\mathit{tt}}{:}{{\mathtt{tabletype}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{table}~{\mathit{tt}}, \{ \mathsf{tables}~({{\mathit{id}}^?}) \}) \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{func}’}~~{{\mathit{id}}^?}{:}{{\mathtt{id}}^?}~~(x, {I'}){:}{{\mathtt{typeuse}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (\mathsf{func}~x, \{ \mathsf{funcs}~({{\mathit{id}}^?}) \}) \\ \end{array} $$ @@ -12756,29 +12955,31 @@ $$ $$ \begin{array}[t]{@{}lrrl@{}l@{}l@{}l@{}} -& {{\mathtt{typeuse}}}_{I} & ::= & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{type}\mbox{’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’} & \quad\Rightarrow\quad{} & (x, {I'}) & \\ +& {{\mathtt{typeuse}}}_{I} & ::= & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{type}’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘\texttt{{)}}’} & \quad\Rightarrow\quad{} & (x, {I'}) & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ I{.}\mathsf{typedefs}{}[x] = \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) \\ +\mbox{if}~ I{.}\mathsf{typedefs}{}[x] = (\mathsf{rec}~{{\mathit{st}}^\ast}) {.} i \\ +{\land}~ {{\mathit{st}}^\ast}{}[i] = \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) \\ {\land}~ {I'} = \{ \mathsf{locals}~{(\epsilon)^{{|{t_1^\ast}|}}} \} \\ \end{array} } \\ -& & | & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{type}\mbox{’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{{{\mathtt{param}}}_{I}^\ast}~~{t_2^\ast}{:}{{{\mathtt{result}}}_{I}^\ast} & \quad\Rightarrow\quad{} & (x, {I'}) & \\ +& & | & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{type}’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘\texttt{{)}}’}~~{(t_1, {{\mathit{id}}^?})^\ast}{:}{{{\mathtt{param}}}_{I}^\ast}~~{t_2^\ast}{:}{{{\mathtt{result}}}_{I}^\ast} & \quad\Rightarrow\quad{} & (x, {I'}) & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ I{.}\mathsf{typedefs}{}[x] = \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) \\ +\mbox{if}~ I{.}\mathsf{typedefs}{}[x] = (\mathsf{rec}~{{\mathit{st}}^\ast}) {.} i \\ +{\land}~ {{\mathit{st}}^\ast}{}[i] = \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) \\ {\land}~ {I'} = \{ \mathsf{locals}~{({{\mathit{id}}^?})^\ast} \} \\ {\land}~ {\vdash}\, {I'} : \mathsf{ok} \\ \end{array} } \\ -& & | & {(t_1, {{\mathit{id}}^?})^\ast}{:}{{{\mathtt{param}}}_{I}^\ast}~~{t_2^\ast}{:}{{{\mathtt{result}}}_{I}^\ast} & \quad\equiv\quad{} & \mbox{‘}\mathtt{(}\mbox{’}~~\mbox{‘}\mathtt{type}\mbox{’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘}\mathtt{)}\mbox{’}~~{{{\mathtt{param}}}_{I}^\ast}~~{{{\mathtt{result}}}_{I}^\ast} & \\ +& & | & {(t_1, {{\mathit{id}}^?})^\ast}{:}{{{\mathtt{param}}}_{I}^\ast}~~{t_2^\ast}{:}{{{\mathtt{result}}}_{I}^\ast} & \quad\equiv\quad{} & \mbox{‘\texttt{{(}}’}~~\mbox{‘\texttt{type}’}~~x{:}{{\mathtt{typeidx}}}_{I}~~\mbox{‘\texttt{{)}}’}~~{{{\mathtt{param}}}_{I}^\ast}~~{{{\mathtt{result}}}_{I}^\ast} & \\ &&& \multicolumn{4}{@{}l@{}}{\quad \quad \begin{array}[t]{@{}l@{}} -\mbox{if}~ I{.}\mathsf{typedefs}{}[x] = \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}) \\ -{\land}~ (I{.}\mathsf{typedefs}{}[i] \neq \mathsf{sub}~\mathsf{final}~(\mathsf{func}~{t_1^\ast} \rightarrow {t_2^\ast}))^{i= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax uN{N : N}(N) = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax sN{N : N}(N) = - | `%`{i : int}(i : int) + | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -205,10 +202,16 @@ syntax u32 = uN(32) syntax u64 = uN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u128 = uN(128) +syntax s33 = sN(33) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax s33 = sN(33) +syntax i32 = iN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $signif(N : N) : nat @@ -239,18 +242,18 @@ syntax exp = int ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = - | NORM{m : m, exp : exp}(m : m, exp : exp) + | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - | SUBNORM{m : m, exp : exp}(m : m) + | SUBNORM(m : m,) {exp : exp} -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) | INF - | NAN{m : m}(m : m) + | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN{N : N}(N) = - | POS{fNmag : fNmag(N)}(fNmag : fNmag(N)) - | NEG{fNmag : fNmag(N)}(fNmag : fNmag(N)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -261,7 +264,7 @@ syntax f64 = fN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0)) + def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) @@ -286,12 +289,12 @@ syntax v128 = vN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = - | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -303,23 +306,23 @@ def $cont(byte : byte) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 + -- if (`%`_byte(ch!`%`_char.0,) = b) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) @@ -327,7 +330,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -371,22 +374,22 @@ syntax fieldidx = idx ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax externidx = - | FUNC{funcidx : funcidx}(funcidx : funcidx) - | GLOBAL{globalidx : globalidx}(globalidx : globalidx) - | TABLE{tableidx : tableidx}(tableidx : tableidx) - | MEM{memidx : memidx}(memidx : memidx) - | TAG{tagidx : tagidx}(tagidx : tagidx) + | FUNC(funcidx) + | GLOBAL(globalidx) + | TABLE(tableidx) + | MEM(memidx) + | TAG(tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:127.1-127.86 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -394,13 +397,13 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:128.1-128.88 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -408,13 +411,13 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.87 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } @@ -422,13 +425,13 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -436,13 +439,13 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -450,79 +453,85 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax free = { - TYPES{`typeidx*` : typeidx*} typeidx*, - FUNCS{`funcidx*` : funcidx*} funcidx*, - GLOBALS{`globalidx*` : globalidx*} globalidx*, - TABLES{`tableidx*` : tableidx*} tableidx*, - MEMS{`memidx*` : memidx*} memidx*, - ELEMS{`elemidx*` : elemidx*} elemidx*, - DATAS{`dataidx*` : dataidx*} dataidx*, - LOCALS{`localidx*` : localidx*} localidx*, - LABELS{`labelidx*` : labelidx*} labelidx* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -534,6 +543,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -592,9 +603,9 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - | REC{n : n}(n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -611,9 +622,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -622,18 +633,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) | BOT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = - | BOT | I32 | I64 | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -642,35 +653,35 @@ syntax resulttype = list(syntax valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = - | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + | `%%`(`mut?` : mut?, storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = - | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) - | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = - | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = - | REC{list : list(syntax subtype)}(list : list(syntax subtype)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(rectype : rectype, n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) + | _IDX(typeidx) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -789,22 +800,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) + | `[%..%]`(u64 : u64, `u64?` : u64?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax globaltype = - | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(addrtype : addrtype, limits : limits) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tabletype = - | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -815,15 +826,15 @@ syntax elemtype = reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax externtype = - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype}(globaltype : globaltype) - | MEM{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype}(tabletype : tabletype) - | FUNC{typeuse : typeuse}(typeuse : typeuse) + | TAG(tagtype) + | GLOBAL(globaltype) + | MEM(memtype) + | TABLE(tabletype) + | FUNC(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -1097,7 +1108,7 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise @@ -1198,11 +1209,11 @@ def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype @@ -1212,7 +1223,7 @@ def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -1257,7 +1268,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -1267,47 +1278,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : n, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec: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-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -1484,17 +1489,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -1543,11 +1548,11 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsize((Jnn : Jnn <: lanetype))) + syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -1565,7 +1570,7 @@ syntax lit_(storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1580,7 +1585,7 @@ syntax unop_(numtype : numtype) | CLZ | CTZ | POPCNT - | EXTEND{sz : sz}(sz : sz) + | EXTEND(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) @@ -1602,13 +1607,13 @@ syntax binop_(numtype : numtype) | ADD | SUB | MUL - | DIV{sx : sx}(sx : sx) - | REM{sx : sx}(sx : sx) + | DIV(sx) + | REM(sx) | AND | OR | XOR | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) | ROTL | ROTR @@ -1633,7 +1638,7 @@ syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE{sx : sx}(sx : sx) + | MUL_WIDE(sx) -- if ($sizenn((Inn : Inn <: numtype)) = 64) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1646,10 +1651,10 @@ syntax relop_(numtype : numtype) syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) + | LT(sx) + | GT(sx) + | LE(sx) + | GE(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1666,7 +1671,7 @@ syntax relop_(numtype : numtype) syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | EXTEND{sx : sx}(sx : sx) + | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) | WRAP -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) @@ -1674,15 +1679,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx) + | TRUNC_SAT(sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -1697,37 +1702,40 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax shape = - | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax M = dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -1761,7 +1769,7 @@ syntax vvtestop = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG | POPCNT @@ -1769,7 +1777,7 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG | SQRT @@ -1782,29 +1790,29 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB | MUL @@ -1820,38 +1828,38 @@ syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE | LT @@ -1861,93 +1869,93 @@ syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = +syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTADD_PAIRWISE{sx : sx}(sx : sx) +syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTMUL{half : half, sx : sx}(half : half, sx : sx) +syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | `RELAXED_DOT_ADDS` +syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | EXTEND{half : half, sx : sx}(half : half, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | DEMOTE{zero : zero}(zero : zero) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | PROMOTELOW -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - ALIGN{u32 : u32} u32, - OFFSET{u32 : u32} u32 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) - -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | SPLAT{sz : sz}(sz : sz) - | ZERO{sz : sz}(sz : sz) + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | SPLAT(sz) + | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) - | _IDX{funcidx : funcidx}(funcidx : funcidx) + | _RESULT(valtype?) + | _IDX(typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -1955,38 +1963,15 @@ syntax addr = nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) -} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax catch = - | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) - | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx) + | CATCH_ALL_REF(labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -1994,6 +1979,9 @@ syntax dataaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -2008,177 +1996,199 @@ syntax tagaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax externaddr = - | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) - | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) - | MEM{memaddr : memaddr}(memaddr : memaddr) - | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) - | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + | TAG(tagaddr) + | GLOBAL(globaladdr) + | MEM(memaddr) + | TABLE(tableaddr) + | FUNC(funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR externaddr } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax moduleinst = { - TYPES{`deftype*` : deftype*} deftype*, - TAGS{`tagaddr*` : tagaddr*} tagaddr*, - GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, - MEMS{`memaddr*` : memaddr*} memaddr*, - TABLES{`tableaddr*` : tableaddr*} tableaddr*, - FUNCS{`funcaddr*` : funcaddr*} funcaddr*, - DATAS{`dataaddr*` : dataaddr*} dataaddr*, - ELEMS{`elemaddr*` : elemaddr*} elemaddr*, - EXPORTS{`exportinst*` : exportinst*} exportinst* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE | DROP - | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) - | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) - | BR{labelidx : labelidx}(labelidx : labelidx) - | BR_IF{labelidx : labelidx}(labelidx : labelidx) - | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) - | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | CALL{funcidx : funcidx}(funcidx : funcidx) - | CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | SELECT(valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx) + | BR_IF(labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx) + | BR_ON_NON_NULL(labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx) + | CALL_REF(typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) | RETURN - | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) - | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | THROW{tagidx : tagidx}(tagidx : tagidx) + | RETURN_CALL(funcidx) + | RETURN_CALL_REF(typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx) | THROW_REF - | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) - | LOCAL.GET{localidx : localidx}(localidx : localidx) - | LOCAL.SET{localidx : localidx}(localidx : localidx) - | LOCAL.TEE{localidx : localidx}(localidx : localidx) - | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) - | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) - | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) - | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) - | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) - | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) - | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | LOAD{numtype : numtype, `loadop_?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_(numtype)?, memidx : memidx, memarg : memarg) - | STORE{numtype : numtype, `storeop_?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_(numtype)?, memidx : memidx, memarg : memarg) - | VLOAD{vectype : vectype, `vloadop_?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_(vectype)?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | MEMORY.SIZE{memidx : memidx}(memidx : memidx) - | MEMORY.GROW{memidx : memidx}(memidx : memidx) - | MEMORY.FILL{memidx : memidx}(memidx : memidx) - | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) - | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.IS_NULL - | REF.AS_NON_NULL - | REF.EQ - | REF.TEST{reftype : reftype}(reftype : reftype) - | REF.CAST{reftype : reftype}(reftype : reftype) - | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) - | REF.I31 - | I31.GET{sx : sx}(sx : sx) - | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) - | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) - | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.LEN - | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) - | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | EXTERN.CONVERT_ANY - | ANY.CONVERT_EXTERN - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | UNOP{numtype : numtype, unop_ : unop_(numtype)}(numtype : numtype, unop_ : unop_(numtype)) - | BINOP{numtype : numtype, binop_ : binop_(numtype)}(numtype : numtype, binop_ : binop_(numtype)) - | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) - | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) - | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) - | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) - | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) - | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) - | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) - | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) - | VUNOP{shape : shape, vunop_ : vunop_(shape)}(shape : shape, vunop_ : vunop_(shape)) - | VBINOP{shape : shape, vbinop_ : vbinop_(shape)}(shape : shape, vbinop_ : vbinop_(shape)) - | VTERNOP{shape : shape, vternop_ : vternop_(shape)}(shape : shape, vternop_ : vternop_(shape)) - | VTESTOP{shape : shape, vtestop_ : vtestop_(shape)}(shape : shape, vtestop_ : vtestop_(shape)) - | VRELOP{shape : shape, vrelop_ : vrelop_(shape)}(shape : shape, vrelop_ : vrelop_(shape)) - | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_(ishape)}(ishape : ishape, vshiftop_ : vshiftop_(ishape)) - | VBITMASK{ishape : ishape}(ishape : ishape) - | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_(bshape)}(bshape : bshape, vswizzlop_ : vswizzlop_(bshape)) - | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) - | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)) - | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)) - | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)) - | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx) + | `LOCAL.SET`(localidx) + | `LOCAL.TEE`(localidx) + | `GLOBAL.GET`(globalidx) + | `GLOBAL.SET`(globalidx) + | `TABLE.GET`(tableidx) + | `TABLE.SET`(tableidx) + | `TABLE.SIZE`(tableidx) + | `TABLE.GROW`(tableidx) + | `TABLE.FILL`(tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx) + | `MEMORY.GROW`(memidx) + | `MEMORY.FILL`(memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx) + | `REF.NULL`(heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype) + | `REF.CAST`(reftype) + | `REF.FUNC`(funcidx) + | `REF.I31` + | `I31.GET`(sx) + | `STRUCT.NEW`(typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|,) = $dim(bshape!`%`_bshape.0)) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) - | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -2188,14 +2198,14 @@ syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_((numtype : numtype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_((vectype : vectype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -2207,232 +2217,249 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{funcidx : funcidx}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 - def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:463.1-463.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:469.1-469.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:470.1-470.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:471.1-471.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:474.1-475.55 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:478.1-478.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:480.1-480.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:481.1-481.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:482.1-482.56 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:483.1-483.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:484.1-484.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:485.1-485.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:487.1-487.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:488.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:491.1-492.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:499.1-500.47 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:501.1-501.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:503.1-503.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:505.1-505.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 - def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 - def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 - def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 - def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 - def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 - def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 - def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 - def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 - def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 - def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 - def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 - def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 - def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 - def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 - def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 - def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 - def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 - def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 - def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 - def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 - def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 - def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 - def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.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*`})) } @@ -2444,66 +2471,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax datamode = - | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elem = - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : name, name : name, externtype : externtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax export = - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + | EXPORT(name : name, externidx : externidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax module = - | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -2545,7 +2572,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -2557,9 +2584,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -2584,7 +2611,7 @@ def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* @@ -2603,49 +2630,49 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + | `%%`(init : init, valtype : valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax context = { - TYPES{`deftype*` : deftype*} deftype*, - RECS{`subtype*` : subtype*} subtype*, - TAGS{`tagtype*` : tagtype*} tagtype*, - GLOBALS{`globaltype*` : globaltype*} globaltype*, - MEMS{`memtype*` : memtype*} memtype*, - TABLES{`tabletype*` : tabletype*} tabletype*, - FUNCS{`deftype*` : deftype*} deftype*, - DATAS{`datatype*` : datatype*} datatype*, - ELEMS{`elemtype*` : elemtype*} elemtype*, - LOCALS{`localtype*` : localtype*} localtype*, - LABELS{`resulttype*` : resulttype*} resulttype*, - RETURN{`resulttype?` : resulttype?} resulttype?, - REFS{`funcidx*` : funcidx*} funcidx* + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -2693,12 +2720,8 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) +syntax oktypenat = + | OK(nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -2721,9 +2744,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) - -- if ($expanddt(deftype) = comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -2732,22 +2755,21 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) `%|-%<:%`(C, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool +def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true + def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx : typeidx, x : idx, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : n, x : idx, i : nat}(REC_typeuse(j), x, i) = (j < i) + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + -- otherwise ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) + def $unrollht_{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -2763,181 +2785,158 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- if (|x*{x <- `x*`}| <= 1) - -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 - rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 - rule _rec2{C : context, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/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) - -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- (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-3.0/2.1-validation.types.spectec:91.1-91.126 -relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 - rule empty{C : context, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:92.1-92.102 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 - rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) - -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- 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-3.0/2.1-validation.types.spectec:95.1-95.108 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.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*`})) + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-3.0/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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) @@ -2975,7 +2974,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: @@ -2985,7 +2984,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: @@ -3002,108 +3001,134 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 - rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.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))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) + + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.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*`})) + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -3118,21 +3143,52 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/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)) + -- 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'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) +} + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) @@ -3146,14 +3202,14 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -3182,25 +3238,30 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) - -- if (m_1 <= m_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -3263,69 +3324,77 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) +relation Defaultable: `|-%DEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%DEFAULTABLE`(t) + `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -3334,82 +3403,82 @@ rec { relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_labelidx.0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)])) + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -3417,8 +3486,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -3426,552 +3495,557 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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-3.0/2.3-validation.instructions.spectec:202.1-204.31 - rule ref.null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 - rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))],))) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 - rule ref.i31{C : context}: - `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 - rule ref.is_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 - rule ref.as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 - rule ref.eq{C : context}: - `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 - rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 - rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 - rule i31.get{C : context, sx : sx}: - `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.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)],))) + -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(MUT_mut), zt)) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) + -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 - rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: - `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 - rule array.len{C : context}: - `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 - rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 - rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 - rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 - rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 - rule local.get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 - rule local.set{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 - rule local.tee{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 - rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: - `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 - rule global.set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 - rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 - rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 - rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 - rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 - rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 - rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 - rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 - rule elem.drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 - rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.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)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 - rule data.drop{C : context, x : idx}: - `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 - rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 - rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 - rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:627.1-631.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*`}))) + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%NONDEFAULTABLE`(t) + `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -3985,48 +4059,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: - `%|-%CONST`(C, REF.NULL_instr(ht)) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.func{C : context, x : idx}: - `%|-%CONST`(C, REF.FUNC_instr(x)) + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new_default{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_default{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_fixed{C : context, x : idx, n : n}: - `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule extern.convert_any{C : context}: - `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, GLOBAL.GET_instr(x)) + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -4047,7 +4121,7 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4057,7 +4131,7 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) - -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) @@ -4096,21 +4170,23 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- Defaultable: `|-%DEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Defaultable: `|-%DEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_idx.0]) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], 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*`},)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) @@ -4162,7 +4238,7 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -4195,7 +4271,7 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(dt : deftype <: typeuse)) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -4208,51 +4284,51 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) - -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) - -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec syntax nonfuncs = - | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + `|-%:%`(MODULE_module(`%`_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*`} -- (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*`} @@ -4263,9 +4339,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) - -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (C = C' +++ {TYPES [], 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 (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*`})) @@ -4274,12 +4350,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -4406,7 +4482,7 @@ def $sx(storagetype : storagetype) : sx? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) @@ -4450,7 +4526,7 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) @@ -4471,51 +4547,51 @@ def $ictz_(N : N, iN : iN(N)) : iN(N) def $ipopcnt_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) +def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))) + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))) + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4551,16 +4627,16 @@ def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) @@ -4610,50 +4686,50 @@ def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* @@ -4734,31 +4810,31 @@ def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wrap__(M : M, N : N, iN : iN(M)) : iN(N) +def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $demote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $promote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) +def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) @@ -4800,7 +4876,7 @@ def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : nu ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, S_sx, i)] + def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4835,9 +4911,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -4915,12 +4991,12 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) @@ -4937,7 +5013,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -4948,32 +5024,32 @@ def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?(zero) + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?() + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?(half) + def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?(LOW_half) + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -4988,7 +5064,7 @@ def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -4997,150 +5073,136 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) + def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) + def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) + def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) + def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivtestop_(shape : shape, def $f_(N : N, iN : iN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivtestop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvtestop_(shape : shape, def $f_(N : N, fN : fN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvtestop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -5167,204 +5229,199 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vtestop_(shape : shape, vtestop_ : vtestop_(shape), vec_ : vec_(V128_Vnn)) : u32 + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vtestop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ALL_TRUE_vtestop_, v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) + def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) + def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* @@ -5381,9 +5438,9 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -5396,165 +5453,154 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(S_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) + -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), RELAXED_DOTS_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax ref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | VCONST(vectype : vectype, vec_(vectype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | _VALS(val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = - | `...` + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | `...` + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS val* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax store = { - TAGS{`taginst*` : taginst*} taginst*, - GLOBALS{`globalinst*` : globalinst*} globalinst*, - MEMS{`meminst*` : meminst*} meminst*, - TABLES{`tableinst*` : tableinst*} tableinst*, - FUNCS{`funcinst*` : funcinst*} funcinst*, - DATAS{`datainst*` : datainst*} datainst*, - ELEMS{`eleminst*` : eleminst*} eleminst*, - STRUCTS{`structinst*` : structinst*} structinst*, - ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, - EXNS{`exninst*` : exninst*} exninst* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(store : store, frame : frame) + | `%;%`(store : store, frame : frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -5578,13 +5624,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5592,13 +5638,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5606,13 +5652,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5620,13 +5666,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5634,13 +5680,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -5715,115 +5761,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_idx.0] = ?(v)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], f) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : idx, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], f) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : idx, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], f) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : idx, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], f) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : idx, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], f) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : idx, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], f) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst @@ -5833,15 +5889,34 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostcallresult = + | RES(store : store, result : result) + | BOT + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $lift_result(result : result) : instr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result(TRAP_result) = [TRAP_instr] ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) @@ -5860,49 +5935,50 @@ rec { ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 - rule null{s : store, ht : heaptype, ht' : heaptype}: - `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/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(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 - rule extern{s : store, addrref : addrref}: - `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -5922,72 +5998,86 @@ relation Val_ok: `%|-%:%`(store, val, valtype) `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(funcinst.TYPE_funcinst : deftype <: typeuse)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -6034,7 +6124,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -6062,9 +6152,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -6072,9 +6162,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -6083,11 +6173,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -6118,81 +6208,87 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.i31{i : num_(I32_numtype)}: - `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, i))]) + rule `ref.i31`{i : num_(I32_numtype)}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: - `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -6262,7 +6358,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- if (c = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) + -- if (c = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: @@ -6295,9 +6391,10 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_(V128_Vnn), sh : shape, vtestop : vtestop_(sh), i : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- if (i = $vtestop_(sh, vtestop, c_1)) + rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) + -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: @@ -6326,23 +6423,23 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: - `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: @@ -6372,28 +6469,27 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -6401,10 +6497,9 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -6413,24 +6508,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- if ($funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -6442,486 +6525,484 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) - -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(M)*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})) + -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)])) + -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1))]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_u32.0]) : val <: instr)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-null`{z : state, ht : heaptype, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), ht_2 : heaptype, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_ELEM_instr(x, y)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_DATA_instr(x, y)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6952,138 +7033,171 @@ relation Step: `%~>%`(config, config) `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:184.1-190.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- if ($funcinst(`%;%`_state(s, f))[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:320.1-321.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|))])) + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) -- if (ti = $growtable($table(z, x), n, ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.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!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.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!`%`_u32.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.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!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n,),)), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:528.1-532.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!`%`_u32.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n,),)), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:534.1-537.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!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.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!`%`_u32.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.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!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_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-3.0/4.3-execution.instructions.spectec:532.1-537.49 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:550.1-555.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!`%`_u32.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) + -- 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-3.0/4.3-execution.instructions.spectec:546.1-549.37 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:564.1-567.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) -- if (mi = $growmem($mem(z, x), n)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 - rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:778.1-779.64 - rule `array.set-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:781.1-783.39 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:795.1-797.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } @@ -7167,7 +7281,7 @@ def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) def $allocmem(store : store, memtype : memtype) : (store, memaddr) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { @@ -7279,8 +7393,8 @@ def $allocexports(moduleinst : moduleinst, export*) : exportinst* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) @@ -7294,7 +7408,7 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) @@ -7308,137 +7422,962 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] + def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- if (z' = `%;%`_state(s, f)) -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) + -- if (module = 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*`},))) -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) + -- if ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D,), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -rec { +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 -grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) - -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) -} +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) - -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) - -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) - -- if ((n >= (2 ^ 7)) /\ (N > 7)) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec -grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(33)} i:BsN(33) => i +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} + +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt,) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I,) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) + +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context,) + ;; ../../../../specification/wasm-3.0/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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), 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([(rt : reftype <: valtype)],)))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store, t : valtype}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) + -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/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*`},))) + -- 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*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- Ref_ok: `%|-%:%`(s, ref, rt) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- if (C'.RETURN_context = ?(`%`_resulttype(t^n{t <- `t*`},))) + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) + -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + rule seq{s : store, 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*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/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*`},))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + rule `ref.struct`{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-3.0/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store,) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s,) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- 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?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s,) + -- Frame_ok: `%|-%:%`(s, f, C) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A) + | _DOTS + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A) + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots +} + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat,) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion,) + -- NotationTypingPremise: `%`(premise_1,) + -- NotationTypingPremise: `%`(premise_2,) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) +} + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*,) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) + + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)],) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +rec { + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) + -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) +} + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat,) + -- if (i = 0) + +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bbyte : byte + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +grammar BuN(N : N) : uN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) + -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +grammar BsN(N : N) : sN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) + -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) + -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) + -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BiN(N : N) : iN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar BfN(N : N) : fN(N) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu32 : u32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bu64 : u64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bs33 : s33 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : sN(33)} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf32 : f32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(32)} p:BfN(32) => p + prod{`` : fN(32)} ``:BfN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf64 : f64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(64)} p:BfN(64) => p + prod{`` : fN(64)} ``:BfN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -7486,6 +8425,11 @@ grammar Blocalidx : localidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blabelidx : labelidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -7576,7 +8520,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmut : mut? @@ -7602,16 +8546,16 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`},):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`},):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bsubtype : subtype @@ -7625,20 +8569,20 @@ grammar Bsubtype : subtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Brectype : rectype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btagtype : tagtype @@ -7648,7 +8592,7 @@ grammar Btagtype : tagtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -7658,7 +8602,7 @@ grammar Bmemtype : memtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btabletype : tabletype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -7673,6 +8617,17 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -7680,7 +8635,7 @@ grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_funcidx((i!`%`_s33.0 : int <:> nat))) + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -7694,41 +8649,24 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u32(m):Bu32}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u32(m)}) + prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u32(m):Bu32}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u32(m)}) + prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) + prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -7740,996 +8678,1000 @@ grammar Binstr : instr prod 0x1B => SELECT_instr(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:24.5-24.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:25.5-25.56 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:26.5-26.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:27.5-28.55 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.22 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-35.32 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:36.5-36.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:37.5-37.19 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:38.5-38.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:39.5-39.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-55.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:56.5-56.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-57.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:61.5-61.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:62.5-62.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:69.5-69.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:70.5-70.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:74.5-74.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:75.5-75.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:76.5-76.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:93.5-93.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:94.5-94.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:95.5-95.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:96.5-96.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:97.5-97.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.5-98.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:99.5-99.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:100.5-100.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:101.5-101.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:102.5-102.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:103.5-103.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:104.5-104.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:134.5-134.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:135.5-135.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:136.5-136.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:137.5-137.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:138.5-138.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:151.5-151.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:158.5-158.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:159.5-159.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:160.5-160.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-173.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-175.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:180.5-180.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr + prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:186.5-186.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) + prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, `%`_num_(n)) + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, `%`_num_(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:196.5-196.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:200.5-200.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:213.5-213.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:217.5-217.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:230.5-230.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:239.5-239.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:248.5-248.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:254.5-254.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:272.5-272.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:278.5-278.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:283.5-283.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:289.5-289.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:307.5-307.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:317.5-317.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:327.5-327.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:337.5-337.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:347.5-347.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.33 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.34 - prod 0xBB => CVTOP_instr(F32_numtype, F64_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:376.5-376.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 - prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 - prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:405.5-405.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:407.5-407.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) + prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) + prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -8740,7 +9682,7 @@ grammar Bexpr : expr ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -8748,12 +9690,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + prod {{Bname} {Bbyte*{}}} => [] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustomsec : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -8783,7 +9725,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) @@ -8825,11 +9767,8 @@ grammar Bexportsec : export* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx} x:Bfuncidx => [START_start(x)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* + ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + prod{x : idx} x:Bfuncidx => [START_start(x)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstartsec : start? @@ -8839,39 +9778,36 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belem : elem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -8882,7 +9818,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -8893,11 +9829,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -8907,10 +9843,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* + prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacntsec : u32? @@ -8930,17 +9863,17 @@ grammar Btagsec : tag* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmagic : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} @@ -8948,9 +9881,9 @@ grammar Bmodule : module ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -8975,57 +9908,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{`` : nat} ``:0x21 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{`` : nat} ``:0x23 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{`` : nat} ``:0x24 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{`` : nat} ``:0x25 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{`` : nat} ``:0x26 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{`` : nat} ``:0x27 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{`` : nat} ``:0x2A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{`` : nat} ``:0x2B => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{`` : nat} ``:0x2D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{`` : nat} ``:0x2E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{`` : nat} ``:0x2F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{`` : nat} ``:0x3A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{`` : nat} ``:0x3C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{`` : nat} ``:0x3D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{`` : nat} ``:0x3E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{`` : nat} ``:0x3F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{`` : nat} ``:0x40 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{`` : nat} ``:0x5C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{`` : nat} ``:0x5E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{`` : nat} ``:0x5F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{`` : nat} ``:0x60 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{`` : nat} ``:0x7C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{`` : nat} ``:0x7E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -9094,21 +10027,21 @@ grammar Thexnum : nat grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod "\\t" => `%`_char(9,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod "\\n" => `%`_char(10,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod "\\r" => `%`_char(13,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod "\\\"" => `%`_char(34,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod "\\'" => `%`_char(39,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod "\\\\" => `%`_char(92,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9116,7 +10049,7 @@ grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -9127,15 +10060,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -9188,13 +10121,13 @@ grammar Tblockcomment : () grammar Tblockchar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -9275,24 +10208,24 @@ grammar Tnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) + prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -9330,9 +10263,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9354,9 +10284,9 @@ grammar TfNmag(N : N) : fNmag(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod "nan" => NAN_fNmag($canon_(N),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9401,11 +10331,6 @@ grammar Ti64 : u64 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti128 : u128 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(128)} ``:TiN(128) => `` - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tf32 : f32 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9422,61 +10347,12 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`subtype?*` : subtype?*} subtype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.57 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{x : idx} x:Tu32 => x ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -9640,12 +10516,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(I : I) : valtype @@ -9655,11 +10531,11 @@ grammar Tresult_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfinal : final @@ -9674,12 +10550,12 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -9691,21 +10567,23 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I} {{"("} {"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] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I',) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype @@ -9732,15 +10610,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -9759,7 +10637,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -9772,26 +10650,33 @@ grammar Tcatch_(I : I) : catch ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u32(m)} + prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -9802,7 +10687,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "drop" => DROP_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} {{"select"} {t?{t <- `t?`}:Tresult_(I)?{}}} => SELECT_instr(?(lift(t?{t <- `t?`}))) + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9823,7 +10708,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9832,37 +10717,37 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9872,59 +10757,59 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -9934,101 +10819,101 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr + prod "ref.is_null" => `REF.IS_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr + prod "ref.eq" => `REF.EQ`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + prod "i31.get_s" => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) + prod "i31.get_u" => `I31.GET`_instr(U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr + prod "array.len" => `ARRAY.LEN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10112,9 +10997,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10122,11 +11007,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10262,9 +11147,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10330,205 +11215,205 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -10538,259 +11423,263 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -10809,32 +11698,19 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:31.1-41.24 -grammar Tfoldedinstr_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:28.5-28.59 - prod{in : instr, `in'*` : instr*} {{"("} {in:Tplaininstr_(I)} {in'*{in' <- `in'*`}:Tinstrs_(I)} {")"}} => in'*{in' <- `in'*`} ++ [in] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:32.5-33.17 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [BLOCK_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:34.5-35.16 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [LOOP_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:36.5-39.33 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `in_1*` : instr*, `in_2*` : instr*} {{"("} {"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"("} {"then"} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {")"} {{{"("} {"else"} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {")"}}?{}} {")"}} => in*{in <- `in*`} ++ [`IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:40.5-41.24 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*} {{"("} {"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:75.1-77.65 +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:61.5-63.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:64.5-66.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:67.5-69.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:70.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } @@ -10843,528 +11719,229 @@ grammar Texpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, st : subtype, n : n} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{}))) - -- if (((n = 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS [?(st)]})) \/ ((n =/= 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?()^n{}}))) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_memidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffsetexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*, x : idx, e : expr} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {x:Tmemuse_(I)} {e:Toffset_(I)} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_tableidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*, x : idx, e' : expr} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {x:Ttableuse_(I)} {e':Toffset_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemorydots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:226.1-226.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:238.1-238.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:239.1-239.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:240.1-240.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:227.1-227.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:242.1-242.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:243.1-243.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:244.1-244.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:228.1-228.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:246.1-246.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:247.1-247.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:248.1-248.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:229.1-229.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:250.1-250.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:251.1-251.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:252.1-252.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:230.1-230.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:254.1-254.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:255.1-255.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:256.1-256.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:231.1-231.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:232.1-232.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:233.1-233.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:234.1-234.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:235.1-235.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:236.1-236.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered([]) = true - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) - -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') - -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) - -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) - -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) - -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) - -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) - -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) - -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) - -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) - -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) - -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) - -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) - -- if $ordered(decl*{decl <- `decl*`}) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecl_(I : I) : (decl, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tmodule : module + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) + -- if (I' = $concat_idctxt(I*{I <- `I*`})) + -- Idctxt_ok: `|-%:OK`(I',) + -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) + -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) + -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) + -- if (global*{global <- `global*`} = $globalsd(decl*{decl <- `decl*`})) + -- if (mem*{mem <- `mem*`} = $memsd(decl*{decl <- `decl*`})) + -- if (table*{table <- `table*`} = $tablesd(decl*{decl <- `decl*`})) + -- if (func*{func <- `func*`} = $funcsd(decl*{decl <- `decl*`})) + -- if (data*{data <- `data*`} = $datasd(decl*{decl <- `decl*`})) + -- if (elem*{elem <- `elem*`} = $elemsd(decl*{decl <- `decl*`})) + -- if (lift(start?{start <- `start?`}) = $startsd(decl*{decl <- `decl*`})) + -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) + -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -11376,14 +11953,14 @@ grammar Bsym : A ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsymsplit : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -11395,18 +11972,9 @@ grammar Tsym : A ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsymsplit : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tabbrev : () @@ -11417,9 +11985,6 @@ grammar Tabbrev : () ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax M = nat - ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax K = nat @@ -11486,7 +12051,7 @@ def $concatn_(syntax X, X**, nat : nat) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 - def $concatn_{syntax X, `w*` : X*, n : n, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -11577,22 +12142,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax uN{N : N}(N) = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax sN{N : N}(N) = - | `%`{i : int}(i : int) + | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -11614,10 +12179,16 @@ syntax u32 = uN(32) syntax u64 = uN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u128 = uN(128) +syntax s33 = sN(33) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax s33 = sN(33) +syntax i32 = iN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $signif(N : N) : nat @@ -11648,18 +12219,18 @@ syntax exp = int ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = - | NORM{m : m, exp : exp}(m : m, exp : exp) + | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - | SUBNORM{m : m, exp : exp}(m : m) + | SUBNORM(m : m,) {exp : exp} -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) | INF - | NAN{m : m}(m : m) + | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN{N : N}(N) = - | POS{fNmag : fNmag(N)}(fNmag : fNmag(N)) - | NEG{fNmag : fNmag(N)}(fNmag : fNmag(N)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -11670,7 +12241,7 @@ syntax f64 = fN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0)) + def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) @@ -11695,12 +12266,12 @@ syntax v128 = vN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = - | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -11712,23 +12283,23 @@ def $cont(byte : byte) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 + -- if (`%`_byte(ch!`%`_char.0,) = b) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) @@ -11736,7 +12307,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -11780,22 +12351,22 @@ syntax fieldidx = idx ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax externidx = - | FUNC{funcidx : funcidx}(funcidx : funcidx) - | GLOBAL{globalidx : globalidx}(globalidx : globalidx) - | TABLE{tableidx : tableidx}(tableidx : tableidx) - | MEM{memidx : memidx}(memidx : memidx) - | TAG{tagidx : tagidx}(tagidx : tagidx) + | FUNC(funcidx) + | GLOBAL(globalidx) + | TABLE(tableidx) + | MEM(memidx) + | TAG(tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:127.1-127.86 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -11803,13 +12374,13 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:128.1-128.88 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -11817,13 +12388,13 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.87 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } @@ -11831,13 +12402,13 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -11845,13 +12416,13 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -11859,79 +12430,85 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax free = { - TYPES{`typeidx*` : typeidx*} typeidx*, - FUNCS{`funcidx*` : funcidx*} funcidx*, - GLOBALS{`globalidx*` : globalidx*} globalidx*, - TABLES{`tableidx*` : tableidx*} tableidx*, - MEMS{`memidx*` : memidx*} memidx*, - ELEMS{`elemidx*` : elemidx*} elemidx*, - DATAS{`dataidx*` : dataidx*} dataidx*, - LOCALS{`localidx*` : localidx*} localidx*, - LABELS{`labelidx*` : labelidx*} labelidx* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -11943,6 +12520,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -12001,9 +12580,9 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - | REC{n : n}(n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -12020,9 +12599,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -12031,18 +12610,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) | BOT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = - | BOT | I32 | I64 | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -12051,35 +12630,35 @@ syntax resulttype = list(syntax valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = - | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + | `%%`(`mut?` : mut?, storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = - | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) - | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = - | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = - | REC{list : list(syntax subtype)}(list : list(syntax subtype)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(rectype : rectype, n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) + | _IDX(typeidx) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -12198,22 +12777,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) + | `[%..%]`(u64 : u64, `u64?` : u64?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax globaltype = - | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(addrtype : addrtype, limits : limits) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tabletype = - | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -12224,15 +12803,15 @@ syntax elemtype = reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax externtype = - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype}(globaltype : globaltype) - | MEM{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype}(tabletype : tabletype) - | FUNC{typeuse : typeuse}(typeuse : typeuse) + | TAG(tagtype) + | GLOBAL(globaltype) + | MEM(memtype) + | TABLE(tabletype) + | FUNC(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -12513,7 +13092,7 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise @@ -12614,11 +13193,11 @@ def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype @@ -12628,7 +13207,7 @@ def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -12673,7 +13252,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -12683,47 +13262,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : n, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec: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-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -12900,17 +13473,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -12959,11 +13532,11 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsize((Jnn : Jnn <: lanetype))) + syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -12981,7 +13554,7 @@ syntax lit_(storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -12996,7 +13569,7 @@ syntax unop_(numtype : numtype) | CLZ | CTZ | POPCNT - | EXTEND{sz : sz}(sz : sz) + | EXTEND(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) @@ -13018,13 +13591,13 @@ syntax binop_(numtype : numtype) | ADD | SUB | MUL - | DIV{sx : sx}(sx : sx) - | REM{sx : sx}(sx : sx) + | DIV(sx) + | REM(sx) | AND | OR | XOR | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) | ROTL | ROTR @@ -13049,7 +13622,7 @@ syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE{sx : sx}(sx : sx) + | MUL_WIDE(sx) -- if ($sizenn((Inn : Inn <: numtype)) = 64) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -13062,10 +13635,10 @@ syntax relop_(numtype : numtype) syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) + | LT(sx) + | GT(sx) + | LE(sx) + | GE(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -13082,7 +13655,7 @@ syntax relop_(numtype : numtype) syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | EXTEND{sx : sx}(sx : sx) + | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) | WRAP -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) @@ -13090,15 +13663,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx) + | TRUNC_SAT(sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -13113,37 +13686,40 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax shape = - | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax M = dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -13177,7 +13753,7 @@ syntax vvtestop = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG | POPCNT @@ -13185,7 +13761,7 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG | SQRT @@ -13198,29 +13774,29 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB | MUL @@ -13236,38 +13812,38 @@ syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE | LT @@ -13277,93 +13853,93 @@ syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = +syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTADD_PAIRWISE{sx : sx}(sx : sx) +syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTMUL{half : half, sx : sx}(half : half, sx : sx) +syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | `RELAXED_DOT_ADDS` +syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | EXTEND{half : half, sx : sx}(half : half, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | DEMOTE{zero : zero}(zero : zero) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | PROMOTELOW -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - ALIGN{u32 : u32} u32, - OFFSET{u32 : u32} u32 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) - -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | SPLAT{sz : sz}(sz : sz) - | ZERO{sz : sz}(sz : sz) + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | SPLAT(sz) + | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) - | _IDX{funcidx : funcidx}(funcidx : funcidx) + | _RESULT(valtype?) + | _IDX(typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -13371,38 +13947,15 @@ syntax addr = nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) -} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax catch = - | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) - | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx) + | CATCH_ALL_REF(labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -13410,6 +13963,9 @@ syntax dataaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -13424,177 +13980,199 @@ syntax tagaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax externaddr = - | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) - | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) - | MEM{memaddr : memaddr}(memaddr : memaddr) - | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) - | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + | TAG(tagaddr) + | GLOBAL(globaladdr) + | MEM(memaddr) + | TABLE(tableaddr) + | FUNC(funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR externaddr } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax moduleinst = { - TYPES{`deftype*` : deftype*} deftype*, - TAGS{`tagaddr*` : tagaddr*} tagaddr*, - GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, - MEMS{`memaddr*` : memaddr*} memaddr*, - TABLES{`tableaddr*` : tableaddr*} tableaddr*, - FUNCS{`funcaddr*` : funcaddr*} funcaddr*, - DATAS{`dataaddr*` : dataaddr*} dataaddr*, - ELEMS{`elemaddr*` : elemaddr*} elemaddr*, - EXPORTS{`exportinst*` : exportinst*} exportinst* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE | DROP - | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) - | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) - | BR{labelidx : labelidx}(labelidx : labelidx) - | BR_IF{labelidx : labelidx}(labelidx : labelidx) - | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) - | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | CALL{funcidx : funcidx}(funcidx : funcidx) - | CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | SELECT(valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx) + | BR_IF(labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx) + | BR_ON_NON_NULL(labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx) + | CALL_REF(typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) | RETURN - | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) - | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | THROW{tagidx : tagidx}(tagidx : tagidx) + | RETURN_CALL(funcidx) + | RETURN_CALL_REF(typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx) | THROW_REF - | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) - | LOCAL.GET{localidx : localidx}(localidx : localidx) - | LOCAL.SET{localidx : localidx}(localidx : localidx) - | LOCAL.TEE{localidx : localidx}(localidx : localidx) - | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) - | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) - | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) - | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) - | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) - | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) - | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | LOAD{numtype : numtype, `loadop_?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_(numtype)?, memidx : memidx, memarg : memarg) - | STORE{numtype : numtype, `storeop_?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_(numtype)?, memidx : memidx, memarg : memarg) - | VLOAD{vectype : vectype, `vloadop_?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_(vectype)?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | MEMORY.SIZE{memidx : memidx}(memidx : memidx) - | MEMORY.GROW{memidx : memidx}(memidx : memidx) - | MEMORY.FILL{memidx : memidx}(memidx : memidx) - | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) - | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.IS_NULL - | REF.AS_NON_NULL - | REF.EQ - | REF.TEST{reftype : reftype}(reftype : reftype) - | REF.CAST{reftype : reftype}(reftype : reftype) - | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) - | REF.I31 - | I31.GET{sx : sx}(sx : sx) - | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) - | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) - | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.LEN - | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) - | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | EXTERN.CONVERT_ANY - | ANY.CONVERT_EXTERN - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | UNOP{numtype : numtype, unop_ : unop_(numtype)}(numtype : numtype, unop_ : unop_(numtype)) - | BINOP{numtype : numtype, binop_ : binop_(numtype)}(numtype : numtype, binop_ : binop_(numtype)) - | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) - | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) - | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) - | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) - | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) - | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) - | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) - | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) - | VUNOP{shape : shape, vunop_ : vunop_(shape)}(shape : shape, vunop_ : vunop_(shape)) - | VBINOP{shape : shape, vbinop_ : vbinop_(shape)}(shape : shape, vbinop_ : vbinop_(shape)) - | VTERNOP{shape : shape, vternop_ : vternop_(shape)}(shape : shape, vternop_ : vternop_(shape)) - | VTESTOP{shape : shape, vtestop_ : vtestop_(shape)}(shape : shape, vtestop_ : vtestop_(shape)) - | VRELOP{shape : shape, vrelop_ : vrelop_(shape)}(shape : shape, vrelop_ : vrelop_(shape)) - | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_(ishape)}(ishape : ishape, vshiftop_ : vshiftop_(ishape)) - | VBITMASK{ishape : ishape}(ishape : ishape) - | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_(bshape)}(bshape : bshape, vswizzlop_ : vswizzlop_(bshape)) - | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) - | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)) - | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)) - | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)) - | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx) + | `LOCAL.SET`(localidx) + | `LOCAL.TEE`(localidx) + | `GLOBAL.GET`(globalidx) + | `GLOBAL.SET`(globalidx) + | `TABLE.GET`(tableidx) + | `TABLE.SET`(tableidx) + | `TABLE.SIZE`(tableidx) + | `TABLE.GROW`(tableidx) + | `TABLE.FILL`(tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx) + | `MEMORY.GROW`(memidx) + | `MEMORY.FILL`(memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx) + | `REF.NULL`(heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype) + | `REF.CAST`(reftype) + | `REF.FUNC`(funcidx) + | `REF.I31` + | `I31.GET`(sx) + | `STRUCT.NEW`(typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|,) = $dim(bshape!`%`_bshape.0)) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) - | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -13604,14 +14182,14 @@ syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_((numtype : numtype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_((vectype : vectype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -13623,232 +14201,249 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{funcidx : funcidx}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 - def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:463.1-463.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:469.1-469.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:470.1-470.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:471.1-471.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:474.1-475.55 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:478.1-478.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:480.1-480.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:481.1-481.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:482.1-482.56 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:483.1-483.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:484.1-484.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:485.1-485.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:487.1-487.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:488.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:491.1-492.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:499.1-500.47 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:501.1-501.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:503.1-503.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:505.1-505.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 - def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 - def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 - def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 - def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 - def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 - def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 - def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 - def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 - def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 - def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 - def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 - def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 - def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 - def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 - def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 - def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 - def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 - def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 - def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 - def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 - def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 - def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 - def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.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*`})) } @@ -13860,66 +14455,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax datamode = - | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elem = - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : name, name : name, externtype : externtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax export = - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + | EXPORT(name : name, externidx : externidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax module = - | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -13961,7 +14556,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -13973,9 +14568,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -14000,7 +14595,7 @@ def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* @@ -14019,49 +14614,49 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + | `%%`(init : init, valtype : valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax context = { - TYPES{`deftype*` : deftype*} deftype*, - RECS{`subtype*` : subtype*} subtype*, - TAGS{`tagtype*` : tagtype*} tagtype*, - GLOBALS{`globaltype*` : globaltype*} globaltype*, - MEMS{`memtype*` : memtype*} memtype*, - TABLES{`tabletype*` : tabletype*} tabletype*, - FUNCS{`deftype*` : deftype*} deftype*, - DATAS{`datatype*` : datatype*} datatype*, - ELEMS{`elemtype*` : elemtype*} elemtype*, - LOCALS{`localtype*` : localtype*} localtype*, - LABELS{`resulttype*` : resulttype*} resulttype*, - RETURN{`resulttype?` : resulttype?} resulttype?, - REFS{`funcidx*` : funcidx*} funcidx* + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -14109,12 +14704,8 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) +syntax oktypenat = + | OK(nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -14137,9 +14728,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) - -- if ($expanddt(deftype) = comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -14148,22 +14739,21 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) `%|-%<:%`(C, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool +def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true + def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx : typeidx, x : idx, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : n, x : idx, i : nat}(REC_typeuse(j), x, i) = (j < i) + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + -- otherwise ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) + def $unrollht_{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -14179,181 +14769,158 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-105.23 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:107.1-109.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- if (|x*{x <- `x*`}| <= 1) - -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 - rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 - rule _rec2{C : context, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/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) - -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} - -- (if ($unrollht(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} + -- (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-3.0/2.1-validation.types.spectec:91.1-91.126 -relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 - rule empty{C : context, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:92.1-92.102 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 - rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) - -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- 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-3.0/2.1-validation.types.spectec:95.1-95.108 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.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*`})) + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-3.0/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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) @@ -14391,7 +14958,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: @@ -14401,7 +14968,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: @@ -14418,108 +14985,134 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 - rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.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))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) + + ;; ../../../../specification/wasm-3.0/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-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.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*`})) + `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -14534,21 +15127,52 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/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)) + -- 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'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) +} + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) @@ -14562,14 +15186,14 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -14598,25 +15222,30 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) - -- if (m_1 <= m_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -14679,69 +15308,77 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) +relation Defaultable: `|-%DEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%DEFAULTABLE`(t) + `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -14750,82 +15387,82 @@ rec { relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_labelidx.0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)])) + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -14833,8 +15470,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)])) + `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)],), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)],))) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [(rt : reftype <: valtype)],)) -- Reftype_ok: `%|-%:OK`(C, rt_1) -- Reftype_ok: `%|-%:OK`(C, rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) @@ -14842,552 +15479,557 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) - -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`}), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`})) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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-3.0/2.3-validation.instructions.spectec:202.1-204.31 - rule ref.null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 - rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))],))) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 - rule ref.i31{C : context}: - `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 - rule ref.is_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 - rule ref.as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 - rule ref.eq{C : context}: - `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 - rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 - rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 - rule i31.get{C : context, sx : sx}: - `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.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)],))) + -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(MUT_mut), zt)) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) + -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 - rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: - `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 - rule array.len{C : context}: - `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 - rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 - rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 - rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 - rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 - rule local.get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 - rule local.set{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 - rule local.tee{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 - rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: - `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 - rule global.set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 - rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 - rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 - rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 - rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 - rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 - rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 - rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 - rule elem.drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 - rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.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)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 - rule data.drop{C : context, x : idx}: - `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 - rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 - rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 - rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:627.1-631.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*`}))) + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%NONDEFAULTABLE`(t) + `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -15401,48 +16043,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: - `%|-%CONST`(C, REF.NULL_instr(ht)) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.func{C : context, x : idx}: - `%|-%CONST`(C, REF.FUNC_instr(x)) + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new_default{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_default{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_fixed{C : context, x : idx, n : n}: - `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule extern.convert_any{C : context}: - `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, GLOBAL.GET_instr(x)) + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -15463,7 +16105,7 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -15473,7 +16115,7 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) - -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) @@ -15512,21 +16154,23 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- Defaultable: `|-%DEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Defaultable: `|-%DEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx, `local*` : local*, expr : expr, `t_1*` : valtype*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:%`(C, FUNC_func(x, local*{local <- `local*`}, expr), C.TYPES_context[x!`%`_idx.0]) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], 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*`},)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) @@ -15578,7 +16222,7 @@ relation Start_ok: `%|-%:OK`(context, start) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -15611,7 +16255,7 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(dt : deftype <: typeuse)) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -15624,51 +16268,51 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) - -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) - -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec syntax nonfuncs = - | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + `|-%:%`(MODULE_module(`%`_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*`} -- (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*`} @@ -15679,9 +16323,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- (Start_ok: `%|-%:OK`(C, start))?{start <- `start?`} -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) - -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (C = C' +++ {TYPES [], 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 (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*`})) @@ -15690,12 +16334,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -15822,7 +16466,7 @@ def $sx(storagetype : storagetype) : sx? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) @@ -15866,7 +16510,7 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) @@ -15887,51 +16531,51 @@ def $ictz_(N : N, iN : iN(N)) : iN(N) def $ipopcnt_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) +def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))) + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))) + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -15967,16 +16611,16 @@ def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) @@ -16026,50 +16670,50 @@ def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* @@ -16150,31 +16794,31 @@ def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wrap__(M : M, N : N, iN : iN(M)) : iN(N) +def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $demote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $promote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) +def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) @@ -16216,7 +16860,7 @@ def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : nu ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, S_sx, i)] + def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -16251,9 +16895,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -16331,12 +16975,12 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) @@ -16353,7 +16997,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -16364,32 +17008,32 @@ def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?(zero) + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?() + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?(half) + def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?(LOW_half) + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -16404,7 +17048,7 @@ def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -16413,150 +17057,136 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) + def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) + def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) + def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) + def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivtestop_(shape : shape, def $f_(N : N, iN : iN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivtestop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvtestop_(shape : shape, def $f_(N : N, fN : fN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvtestop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -16583,204 +17213,199 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vtestop_(shape : shape, vtestop_ : vtestop_(shape), vec_ : vec_(V128_Vnn)) : u32 + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vtestop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ALL_TRUE_vtestop_, v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) + def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) + def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* @@ -16797,9 +17422,9 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -16812,165 +17437,154 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(S_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) + -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), RELAXED_DOTS_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax ref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | VCONST(vectype : vectype, vec_(vectype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | _VALS(val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = - | `...` + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | `...` + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS val* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax store = { - TAGS{`taginst*` : taginst*} taginst*, - GLOBALS{`globalinst*` : globalinst*} globalinst*, - MEMS{`meminst*` : meminst*} meminst*, - TABLES{`tableinst*` : tableinst*} tableinst*, - FUNCS{`funcinst*` : funcinst*} funcinst*, - DATAS{`datainst*` : datainst*} datainst*, - ELEMS{`eleminst*` : eleminst*} eleminst*, - STRUCTS{`structinst*` : structinst*} structinst*, - ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, - EXNS{`exninst*` : exninst*} exninst* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(store : store, frame : frame) + | `%;%`(store : store, frame : frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -16994,13 +17608,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17008,13 +17622,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17022,13 +17636,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17036,13 +17650,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17050,13 +17664,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -17131,115 +17745,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_idx.0] = ?(v)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], f) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : idx, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], f) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : idx, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], f) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : idx, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], f) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : idx, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], f) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : idx, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], f) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -17249,6 +17873,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -17256,11 +17881,29 @@ def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = ?(meminst') -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostcallresult = + | RES(store : store, result : result) + | BOT + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $lift_result(result : result) : instr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result(TRAP_result) = [TRAP_instr] + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -17278,49 +17921,50 @@ rec { ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 - rule null{s : store, ht : heaptype, ht' : heaptype}: - `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/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(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 - rule extern{s : store, addrref : addrref}: - `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -17340,72 +17984,86 @@ relation Val_ok: `%|-%:%`(store, val, valtype) `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(funcinst.TYPE_funcinst : deftype <: typeuse)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -17452,7 +18110,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17480,9 +18138,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -17490,9 +18148,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -17501,11 +18159,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -17536,81 +18194,87 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.i31{i : num_(I32_numtype)}: - `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, i))]) + rule `ref.i31`{i : num_(I32_numtype)}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: - `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -17680,7 +18344,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- if (c = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) + -- if (c = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: @@ -17713,9 +18377,10 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_(V128_Vnn), sh : shape, vtestop : vtestop_(sh), i : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- if (i = $vtestop_(sh, vtestop, c_1)) + rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) + -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: @@ -17744,23 +18409,23 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: - `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: @@ -17790,28 +18455,27 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -17819,10 +18483,9 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -17831,24 +18494,12 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- if ($funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -17860,933 +18511,1775 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) - -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) - -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(M)*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})) + -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)])) + -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1))]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_u32.0]) : val <: instr)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-null`{z : state, ht : heaptype, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) + -- otherwise + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) + -- otherwise + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = $sx(zt_2)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) + -- otherwise + -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) + -- otherwise + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:184.1-190.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) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (RES_hostcallresult(s', result) <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- if ($funcinst(`%;%`_state(s, f))[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- if (BOT_hostcallresult <- $hostcall(_HOSTFUNC_hostfunc(hf), s, val^n{val <- `val*`})) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:320.1-321.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) + -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 + rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) + -- if (ti = !($growtable($table(z, x), n, ref))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.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-3.0/4.3-execution.instructions.spectec:564.1-567.37 + rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) + -- if (mi = !($growmem($mem(z, x), n))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:795.1-797.39 + rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 + rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} + +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) + -- if (type = TYPE_type(rectype)) + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- if ((s_1, ja) = $alloctag(s, tagtype)) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) + -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-array`{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- if ((s_1, ma) = $allocmem(s, memtype)) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.FILL_instr(x)]) - -- otherwise +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) + -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), ht_2 : heaptype, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) + -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) - -- otherwise - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) - -- otherwise - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) + -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) + -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_ELEM_instr(x, y)]) - -- otherwise - -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- if (module = MODULE_module(`%`_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*`},))) + -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) + -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) + -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) + -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) + -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) + -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) + -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) + -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) + -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) + -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) + -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) + -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) + -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) + -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) + -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_DATA_instr(x, y)]) - -- otherwise - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 -relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 - rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 - rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 - rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- if (z' = `%;%`_state(s, f)) + -- if ((s', a) = $allocglobal(s, gt, val)) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 - rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- if (module = MODULE_module(`%`_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*`},))) + -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) + -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) + -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) + -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) + -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- if ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D,), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 - rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if (a = |$exninst(z)|) - -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 - rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) - -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|))])) - -- if (ti = !($growtable($table(z, x), n, ref))) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 - rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $nbytes_(nt, c)) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 - rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt,) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I,) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 - rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 - rule `vstore_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) - -- if (mi = !($growmem($mem(z, x), n))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 - rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 - rule `array.set-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 - rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 -relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 - rule refl{z : state, `instr*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 - rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: - `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- if (taginst = {TYPE tagtype}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- if (globalinst = {TYPE globaltype, VALUE val}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context,) + ;; ../../../../specification/wasm-3.0/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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), 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([(rt : reftype <: valtype)],)))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store, t : valtype}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) + -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/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*`},))) + -- 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*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- if (C'.RETURN_context = ?(`%`_resulttype(t^n{t <- `t*`},))) + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) + -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + rule seq{s : store, 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*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/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*`},))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) -} +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + rule `ref.struct`{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-3.0/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + -- if $NotImmutReachable(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store,) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s,) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- 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?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s,) + -- Frame_ok: `%|-%:%`(s, f, C) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A) + | _DOTS + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A) + | _LAST(A) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- if (datainst = {BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) -} +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat,) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion,) + -- NotationTypingPremise: `%`(premise_1,) + -- NotationTypingPremise: `%`(premise_2,) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*,) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) - -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) + -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat,) + -- if (i = 0) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bbyte : byte ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec rec { @@ -18794,29 +20287,33 @@ rec { ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) @@ -18826,37 +20323,47 @@ grammar BfN(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu32 : u32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) + prod{`` : uN(32)} ``:BuN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu64 : u64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) + prod{`` : uN(64)} ``:BuN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bs33 : s33 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(33)} i:BsN(33) => i + prod{`` : sN(33)} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf32 : f32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(32)} p:BfN(32) => p + prod{`` : fN(32)} ``:BfN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf64 : f64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(64)} p:BfN(64) => p + prod{`` : fN(64)} ``:BfN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -18904,6 +20411,11 @@ grammar Blocalidx : localidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blabelidx : labelidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -18994,7 +20506,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmut : mut? @@ -19020,16 +20532,16 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`},):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`},):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bsubtype : subtype @@ -19043,20 +20555,20 @@ grammar Bsubtype : subtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Brectype : rectype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btagtype : tagtype @@ -19066,7 +20578,7 @@ grammar Btagtype : tagtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -19076,7 +20588,7 @@ grammar Bmemtype : memtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btabletype : tabletype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -19091,6 +20603,17 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -19098,7 +20621,7 @@ grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_funcidx((i!`%`_s33.0 : int <:> nat))) + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -19112,41 +20635,24 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u32(m):Bu32}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u32(m)}) + prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u32(m):Bu32}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u32(m)}) + prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) + prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -19158,996 +20664,1000 @@ grammar Binstr : instr prod 0x1B => SELECT_instr(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:24.5-24.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:25.5-25.56 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:26.5-26.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:27.5-28.55 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.22 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-35.32 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:36.5-36.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:37.5-37.19 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:38.5-38.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:39.5-39.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-55.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:56.5-56.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-57.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:61.5-61.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:62.5-62.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:69.5-69.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:70.5-70.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:74.5-74.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:75.5-75.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:76.5-76.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:93.5-93.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:94.5-94.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:95.5-95.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:96.5-96.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:97.5-97.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.5-98.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:99.5-99.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:100.5-100.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:101.5-101.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:102.5-102.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:103.5-103.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:104.5-104.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:134.5-134.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:135.5-135.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:136.5-136.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:137.5-137.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:138.5-138.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:151.5-151.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:158.5-158.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:159.5-159.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:160.5-160.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-173.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-175.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:180.5-180.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr + prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:186.5-186.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) + prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, `%`_num_(n)) + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, `%`_num_(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:196.5-196.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:200.5-200.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:213.5-213.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:217.5-217.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:230.5-230.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:239.5-239.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:248.5-248.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:254.5-254.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:272.5-272.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:278.5-278.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:283.5-283.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:289.5-289.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:307.5-307.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:317.5-317.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:327.5-327.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:337.5-337.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:347.5-347.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.33 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.34 - prod 0xBB => CVTOP_instr(F32_numtype, F64_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:376.5-376.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 - prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 - prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:405.5-405.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:407.5-407.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) + prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) + prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -20158,7 +21668,7 @@ grammar Bexpr : expr ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -20166,12 +21676,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + prod {{Bname} {Bbyte*{}}} => [] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustomsec : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -20201,7 +21711,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) @@ -20246,9 +21756,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -20257,39 +21764,36 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belem : elem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -20300,7 +21804,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -20311,11 +21815,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -20325,10 +21829,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* + prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacntsec : u32? @@ -20348,17 +21849,17 @@ grammar Btagsec : tag* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmagic : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} @@ -20366,9 +21867,9 @@ grammar Bmodule : module ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -20393,57 +21894,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{`` : nat} ``:0x21 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{`` : nat} ``:0x23 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{`` : nat} ``:0x24 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{`` : nat} ``:0x25 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{`` : nat} ``:0x26 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{`` : nat} ``:0x27 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{`` : nat} ``:0x2A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{`` : nat} ``:0x2B => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{`` : nat} ``:0x2D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{`` : nat} ``:0x2E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{`` : nat} ``:0x2F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{`` : nat} ``:0x3A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{`` : nat} ``:0x3C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{`` : nat} ``:0x3D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{`` : nat} ``:0x3E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{`` : nat} ``:0x3F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{`` : nat} ``:0x40 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{`` : nat} ``:0x5C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{`` : nat} ``:0x5E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{`` : nat} ``:0x5F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{`` : nat} ``:0x60 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{`` : nat} ``:0x7C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{`` : nat} ``:0x7E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -20512,21 +22013,21 @@ grammar Thexnum : nat grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod "\\t" => `%`_char(9,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod "\\n" => `%`_char(10,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod "\\r" => `%`_char(13,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod "\\\"" => `%`_char(34,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod "\\'" => `%`_char(39,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod "\\\\" => `%`_char(92,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20534,7 +22035,7 @@ grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -20545,15 +22046,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -20606,13 +22107,13 @@ grammar Tblockcomment : () grammar Tblockchar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -20693,24 +22194,24 @@ grammar Tnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) + prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -20748,9 +22249,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20772,9 +22270,9 @@ grammar TfNmag(N : N) : fNmag(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod "nan" => NAN_fNmag($canon_(N),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20819,11 +22317,6 @@ grammar Ti64 : u64 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti128 : u128 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(128)} ``:TiN(128) => `` - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tf32 : f32 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -20840,61 +22333,12 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`subtype?*` : subtype?*} subtype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.57 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{x : idx} x:Tu32 => x ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -21058,12 +22502,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(I : I) : valtype @@ -21073,11 +22517,11 @@ grammar Tresult_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfinal : final @@ -21092,12 +22536,12 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -21109,21 +22553,23 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I} {{"("} {"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] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I',) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype @@ -21150,15 +22596,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -21177,7 +22623,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -21190,26 +22636,33 @@ grammar Tcatch_(I : I) : catch ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u32(m)} + prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -21220,7 +22673,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "drop" => DROP_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} {{"select"} {t?{t <- `t?`}:Tresult_(I)?{}}} => SELECT_instr(?(lift(t?{t <- `t?`}))) + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21241,7 +22694,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21250,37 +22703,37 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21290,59 +22743,59 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21352,101 +22805,101 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr + prod "ref.is_null" => `REF.IS_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr + prod "ref.eq" => `REF.EQ`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + prod "i31.get_s" => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) + prod "i31.get_u" => `I31.GET`_instr(U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr + prod "array.len" => `ARRAY.LEN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21530,9 +22983,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21540,11 +22993,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21680,9 +23133,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21748,205 +23201,205 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -21956,259 +23409,263 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -22227,32 +23684,19 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:31.1-41.24 -grammar Tfoldedinstr_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:28.5-28.59 - prod{in : instr, `in'*` : instr*} {{"("} {in:Tplaininstr_(I)} {in'*{in' <- `in'*`}:Tinstrs_(I)} {")"}} => in'*{in' <- `in'*`} ++ [in] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:32.5-33.17 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [BLOCK_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:34.5-35.16 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [LOOP_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:36.5-39.33 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `in_1*` : instr*, `in_2*` : instr*} {{"("} {"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"("} {"then"} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {")"} {{{"("} {"else"} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {")"}}?{}} {")"}} => in*{in <- `in*`} ++ [`IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:40.5-41.24 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*} {{"("} {"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:75.1-77.65 +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:61.5-63.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:64.5-66.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:67.5-69.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:70.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } @@ -22261,388 +23705,207 @@ grammar Texpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, st : subtype, n : n} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{}))) - -- if (((n = 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS [?(st)]})) \/ ((n =/= 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?()^n{}}))) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_memidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffsetexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*, x : idx, e : expr} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {x:Tmemuse_(I)} {e:Toffset_(I)} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_tableidx(0) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*, x : idx, e' : expr} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {x:Ttableuse_(I)} {e':Toffset_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemorydots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:226.1-226.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:238.1-238.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:239.1-239.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:240.1-240.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:227.1-227.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:242.1-242.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:243.1-243.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:244.1-244.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:228.1-228.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:246.1-246.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:247.1-247.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:248.1-248.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemlist_(I : I) : (reftype, expr*) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:229.1-229.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:250.1-250.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:251.1-251.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:252.1-252.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Ttableuse_(I : I) : tableidx + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telem_(I : I) : (elem, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tstart_(I : I) : (start, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:230.1-230.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:254.1-254.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:255.1-255.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:256.1-256.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:231.1-231.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:232.1-232.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:233.1-233.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:234.1-234.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:235.1-235.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:236.1-236.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered([]) = true - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) @@ -22656,133 +23919,15 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -22794,14 +23939,14 @@ grammar Bsym : A ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsymsplit : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -22813,18 +23958,9 @@ grammar Tsym : A ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsymsplit : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tabbrev : () @@ -22835,9 +23971,6 @@ grammar Tabbrev : () ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec -syntax M = nat - ;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec syntax K = nat @@ -22904,7 +24037,7 @@ def $concatn_(syntax X, X**, nat : nat) : X* ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 - def $concatn_{syntax X, `w*` : X*, n : n, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) + def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec @@ -22995,22 +24128,22 @@ def $ND : bool ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax bit = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax byte = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax uN{N : N}(N) = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax sN{N : N}(N) = - | `%`{i : int}(i : int) + | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -23032,10 +24165,16 @@ syntax u32 = uN(32) syntax u64 = uN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax u128 = uN(128) +syntax s33 = sN(33) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec -syntax s33 = sN(33) +syntax i32 = iN(32) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i64 = iN(64) + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +syntax i128 = iN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $signif(N : N) : nat @@ -23066,18 +24205,18 @@ syntax exp = int ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = - | NORM{m : m, exp : exp}(m : m, exp : exp) + | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) - | SUBNORM{m : m, exp : exp}(m : m) + | SUBNORM(m : m,) {exp : exp} -- if ((m < (2 ^ $M(N))) /\ (((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) = exp)) | INF - | NAN{m : m}(m : m) + | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax fN{N : N}(N) = - | POS{fNmag : fNmag(N)}(fNmag : fNmag(N)) - | NEG{fNmag : fNmag(N)}(fNmag : fNmag(N)) + | POS(fNmag(N)) + | NEG(fNmag(N)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax f32 = fN(32) @@ -23088,7 +24227,7 @@ syntax f64 = fN(64) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0)) + def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) @@ -23113,12 +24252,12 @@ syntax v128 = vN(128) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = - | `%`{`X*` : X*}(X*{X <- `X*`} : X*) + | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax char = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -23130,23 +24269,23 @@ def $cont(byte : byte) : nat ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:89.1-89.25 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:48.1-48.44 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:49.1-51.15 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) - -- if (`%`_byte(ch!`%`_char.0) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-54.46 + -- if (`%`_byte(ch!`%`_char.0,) = b) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:55.1-57.64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:58.1-60.82 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) @@ -23154,7 +24293,7 @@ def $utf8(char*) : byte* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax name = - | `%`{`char*` : char*}(char*{char <- `char*`} : char*) + | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec @@ -23198,22 +24337,22 @@ syntax fieldidx = idx ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax externidx = - | FUNC{funcidx : funcidx}(funcidx : funcidx) - | GLOBAL{globalidx : globalidx}(globalidx : globalidx) - | TABLE{tableidx : tableidx}(tableidx : tableidx) - | MEM{memidx : memidx}(memidx : memidx) - | TAG{tagidx : tagidx}(tagidx : tagidx) + | FUNC(funcidx) + | GLOBAL(globalidx) + | TABLE(tableidx) + | MEM(memidx) + | TAG(tagidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:127.1-127.86 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.24 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:134.1-134.45 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.58 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -23221,13 +24360,13 @@ def $funcsxx(externidx*) : typeidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:128.1-128.88 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.26 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:138.1-138.51 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.62 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -23235,13 +24374,13 @@ def $globalsxx(externidx*) : globalidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.87 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.25 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:142.1-142.48 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.60 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } @@ -23249,13 +24388,13 @@ def $tablesxx(externidx*) : tableidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:146.1-146.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -23263,13 +24402,13 @@ def $memsxx(externidx*) : memidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.85 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.23 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:150.1-150.42 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.56 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } @@ -23277,79 +24416,85 @@ def $tagsxx(externidx*) : tagidx* ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec syntax free = { - TYPES{`typeidx*` : typeidx*} typeidx*, - FUNCS{`funcidx*` : funcidx*} funcidx*, - GLOBALS{`globalidx*` : globalidx*} globalidx*, - TABLES{`tableidx*` : tableidx*} tableidx*, - MEMS{`memidx*` : memidx*} memidx*, - ELEMS{`elemidx*` : elemidx*} elemidx*, - DATAS{`dataidx*` : dataidx*} dataidx*, - LOCALS{`localidx*` : localidx*} localidx*, - LABELS{`labelidx*` : labelidx*} labelidx* + TYPES typeidx*, + FUNCS funcidx*, + GLOBALS globalidx*, + TABLES tableidx*, + MEMS memidx*, + ELEMS elemidx*, + DATAS dataidx*, + LOCALS localidx*, + LABELS labelidx*, + TAGS tagidx* } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt(free?) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:170.1-170.29 +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:175.1-175.25 - def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:176.1-176.57 + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS []} + def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS []} + def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS []} + def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec - def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx]} + def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} + +;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +def $free_tagidx(tagidx : tagidx) : free + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free @@ -23361,6 +24506,8 @@ def $free_externidx(externidx : externidx) : free def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax null = @@ -23419,9 +24566,9 @@ rec { ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) - | REC{n : n}(n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = @@ -23438,9 +24585,9 @@ syntax heaptype = | EXTERN | NOEXTERN | BOT - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _IDX(typeidx) + | _DEF(rectype : rectype, n : n) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = @@ -23449,18 +24596,18 @@ syntax valtype = | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) | BOT ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = - | BOT | I32 | I64 | F32 | F64 | V128 - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) + | BOT | I8 | I16 @@ -23469,35 +24616,35 @@ syntax resulttype = list(syntax valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = - | `%%`{`mut?` : mut?, storagetype : storagetype}(mut?{mut <- `mut?`} : mut?, storagetype : storagetype) + | `%%`(`mut?` : mut?, storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = - | STRUCT{list : list(syntax fieldtype)}(list : list(syntax fieldtype)) - | ARRAY{fieldtype : fieldtype}(fieldtype : fieldtype) - | `FUNC%->%`{resulttype : resulttype}(resulttype : resulttype, resulttype) + | STRUCT(list(syntax fieldtype)) + | ARRAY(fieldtype) + | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = - | SUB{`final?` : final?, `typeuse*` : typeuse*, comptype : comptype}(final?{final <- `final?`} : final?, typeuse*{typeuse <- `typeuse*`} : typeuse*, comptype : comptype) + | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = - | REC{list : list(syntax subtype)}(list : list(syntax subtype)) + | REC(list(syntax subtype)) } ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax deftype = - | _DEF{rectype : rectype, n : n}(rectype : rectype, n : n) + | _DEF(rectype : rectype, n : n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax typevar = - | _IDX{typeidx : typeidx}(typeidx : typeidx) - | REC{n : n}(n : n) + | _IDX(typeidx) + | REC(n) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax reftype = - | REF{`null?` : null?, heaptype : heaptype}(null?{null <- `null?`} : null?, heaptype : heaptype) + | REF(`null?` : null?, heaptype : heaptype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax Inn = @@ -23616,22 +24763,22 @@ syntax Lnn = ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax limits = - | `[%..%]`{u64 : u64}(u64 : u64, u64?) + | `[%..%]`(u64 : u64, `u64?` : u64?) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tagtype = typeuse ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax globaltype = - | `%%`{`mut?` : mut?, valtype : valtype}(mut?{mut <- `mut?`} : mut?, valtype : valtype) + | `%%`(`mut?` : mut?, valtype : valtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax memtype = - | `%%PAGE`{addrtype : addrtype, limits : limits}(addrtype : addrtype, limits : limits) + | `%%PAGE`(addrtype : addrtype, limits : limits) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax tabletype = - | `%%%`{addrtype : addrtype, limits : limits, reftype : reftype}(addrtype : addrtype, limits : limits, reftype : reftype) + | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax datatype = @@ -23642,15 +24789,15 @@ syntax elemtype = reftype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax externtype = - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype}(globaltype : globaltype) - | MEM{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype}(tabletype : tabletype) - | FUNC{typeuse : typeuse}(typeuse : typeuse) + | TAG(tagtype) + | GLOBAL(globaltype) + | MEM(memtype) + | TABLE(tabletype) + | FUNC(typeuse) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec syntax moduletype = - | `%->%`{`externtype*` : externtype*}(externtype*{externtype <- `externtype*`} : externtype*, externtype*) + | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $IN(N : N) : Inn @@ -23931,7 +25078,7 @@ def $funcsxt(externtype*) : deftype* ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 - def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype((dt : deftype <: typeuse))] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) + def $funcsxt{dt : deftype, `xt*` : externtype*}([FUNC_externtype(dt : deftype <: typeuse)] ++ xt*{xt <- `xt*`}) = [dt] ++ $funcsxt(xt*{xt <- `xt*`}) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise @@ -24032,11 +25179,11 @@ def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 - def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`})) + def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 - def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`}), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`})) + def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype @@ -24046,7 +25193,7 @@ def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 - def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`})), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`})) + def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 @@ -24091,7 +25238,7 @@ def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_externtype{mt : memtype, `tv*` : typevar*, `tu*` : typeuse*}(MEM_externtype(mt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = MEM_externtype($subst_memtype(mt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_externtype{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype((dt : deftype <: typeuse)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype(($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse)) + def $subst_externtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(FUNC_externtype(tu'), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = FUNC_externtype($subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype @@ -24101,47 +25248,47 @@ def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $subst_all_valtype{t : valtype, `tu*` : typeuse*, n : n, `i*` : nat*}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:494.1-494.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-554.66 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec: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-3.0/1.2-syntax.types.spectec:495.1-495.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:556.1-556.70 - def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`}))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:523.1-523.34 +;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } @@ -24318,17 +25459,17 @@ def $free_globaltype(globaltype : globaltype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype((addrtype : addrtype <: numtype)) + def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype((addrtype : addrtype <: numtype)) +++ $free_reftype(reftype) + def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec - def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free @@ -24377,11 +25518,11 @@ syntax lane_(lanetype : lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsize((Jnn : Jnn <: lanetype))) + syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vec_{Vnn : Vnn}(Vnn) = vN($vsize(Vnn)) +syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) @@ -24399,7 +25540,7 @@ syntax lit_(storagetype : storagetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax sz = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24414,7 +25555,7 @@ syntax unop_(numtype : numtype) | CLZ | CTZ | POPCNT - | EXTEND{sz : sz}(sz : sz) + | EXTEND(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) @@ -24436,13 +25577,13 @@ syntax binop_(numtype : numtype) | ADD | SUB | MUL - | DIV{sx : sx}(sx : sx) - | REM{sx : sx}(sx : sx) + | DIV(sx) + | REM(sx) | AND | OR | XOR | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) | ROTL | ROTR @@ -24467,7 +25608,7 @@ syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE{sx : sx}(sx : sx) + | MUL_WIDE(sx) -- if ($sizenn((Inn : Inn <: numtype)) = 64) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24480,10 +25621,10 @@ syntax relop_(numtype : numtype) syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE - | LT{sx : sx}(sx : sx) - | GT{sx : sx}(sx : sx) - | LE{sx : sx}(sx : sx) - | GE{sx : sx}(sx : sx) + | LT(sx) + | GT(sx) + | LE(sx) + | GE(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24500,7 +25641,7 @@ syntax relop_(numtype : numtype) syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = - | EXTEND{sx : sx}(sx : sx) + | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) | WRAP -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) @@ -24508,15 +25649,15 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = - | CONVERT{sx : sx}(sx : sx) + | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = - | TRUNC{sx : sx}(sx : sx) - | TRUNC_SAT{sx : sx}(sx : sx) + | TRUNC(sx) + | TRUNC_SAT(sx) | REINTERPRET -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) @@ -24531,37 +25672,40 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax dim = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax shape = - | `%X%`{lanetype : lanetype, dim : dim}(lanetype : lanetype, dim : dim) + | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +syntax M = dim + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $dim{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = `%`_dim(N) + def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $lanetype{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = Lnn + def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $unpackshape{Lnn : Lnn, N : N}(`%X%`_shape(Lnn, `%`_dim(N))) = $lunpack(Lnn) + def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax ishape = - | `%`{shape : shape, Jnn : Jnn}(shape : shape) + | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax bshape = - | `%`{shape : shape}(shape : shape) + | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec @@ -24595,7 +25739,7 @@ syntax vvtestop = ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG | POPCNT @@ -24603,7 +25747,7 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG | SQRT @@ -24616,29 +25760,29 @@ syntax vunop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB - | ADD_SAT{sx : sx}(sx : sx) + | ADD_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | SUB_SAT{sx : sx}(sx : sx) + | SUB_SAT(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) | MUL -- if ($lsizenn((Jnn : Jnn <: lanetype)) >= 16) - | `AVGRU` + | AVGRU -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 16) - | `Q15MULR_SATS` + | Q15MULR_SATS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | `RELAXED_Q15MULRS` + | RELAXED_Q15MULRS -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 16) - | MIN{sx : sx}(sx : sx) + | MIN(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - | MAX{sx : sx}(sx : sx) + | MAX(sx) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB | MUL @@ -24654,38 +25798,38 @@ syntax vbinop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = +syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE - | LT{sx : sx}(sx : sx) + | LT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GT{sx : sx}(sx : sx) + | GT(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | LE{sx : sx}(sx : sx) + | LE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - | GE{sx : sx}(sx : sx) + | GE(sx : sx,) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))) = + syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE | LT @@ -24695,93 +25839,93 @@ syntax vrelop_(shape : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)))) = +syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL - | SHR{sx : sx}(sx : sx) + | SHR(sx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M)))) = +syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTADD_PAIRWISE{sx : sx}(sx : sx) +syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | EXTMUL{half : half, sx : sx}(half : half, sx : sx) +syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) - | `DOTS` + | DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) - | `RELAXED_DOTS` + | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)))) = - | `RELAXED_DOT_ADDS` +syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = + | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | EXTEND{half : half, sx : sx}(half : half, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | CONVERT{`half?` : half?, sx : sx}(half?{half <- `half?`} : half?, sx : sx) + syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))) = - | TRUNC_SAT{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = + | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - | RELAXED_TRUNC{sx : sx, `zero?` : zero?}(sx : sx, zero?{zero <- `zero?`} : zero?) + | RELAXED_TRUNC(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2))) = - | DEMOTE{zero : zero}(zero : zero) + syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = + | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) - | `PROMOTELOW` + | PROMOTELOW -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax memarg = { - ALIGN{u32 : u32} u32, - OFFSET{u32 : u32} u32 + ALIGN u32, + OFFSET u64 } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%_%`{sz : sz, sx : sx}(sz : sz, sx : sx) + | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = - | `%`{sz : sz}(sz : sz) + | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = - | `SHAPE%X%_%`{sz : sz, M : M, sx : sx}(sz : sz, M : M, sx : sx) - -- if (((sz!`%`_sz.0 * M) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) - | SPLAT{sz : sz}(sz : sz) - | ZERO{sz : sz}(sz : sz) + | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) + -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) + | SPLAT(sz) + | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax blocktype = - | _RESULT{`valtype?` : valtype?}(valtype?{valtype <- `valtype?`} : valtype?) - | _IDX{funcidx : funcidx}(funcidx : funcidx) + | _RESULT(valtype?) + | _IDX(typeidx) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax addr = nat @@ -24789,38 +25933,15 @@ syntax addr = nat ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax exnaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax funcaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax hostaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax structaddr = addr - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -rec { - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-42.23 -syntax addrref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) -} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax catch = - | CATCH{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_REF{tagidx : tagidx, labelidx : labelidx}(tagidx : tagidx, labelidx : labelidx) - | CATCH_ALL{labelidx : labelidx}(labelidx : labelidx) - | CATCH_ALL_REF{labelidx : labelidx}(labelidx : labelidx) + | CATCH(tagidx : tagidx, labelidx : labelidx) + | CATCH_REF(tagidx : tagidx, labelidx : labelidx) + | CATCH_ALL(labelidx) + | CATCH_ALL_REF(labelidx) + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax exnaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax dataaddr = addr @@ -24828,6 +25949,9 @@ syntax dataaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax elemaddr = addr +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax funcaddr = addr + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globaladdr = addr @@ -24842,177 +25966,199 @@ syntax tagaddr = addr ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax externaddr = - | TAG{tagaddr : tagaddr}(tagaddr : tagaddr) - | GLOBAL{globaladdr : globaladdr}(globaladdr : globaladdr) - | MEM{memaddr : memaddr}(memaddr : memaddr) - | TABLE{tableaddr : tableaddr}(tableaddr : tableaddr) - | FUNC{funcaddr : funcaddr}(funcaddr : funcaddr) + | TAG(tagaddr) + | GLOBAL(globaladdr) + | MEM(memaddr) + | TABLE(tableaddr) + | FUNC(funcaddr) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exportinst = { - NAME{name : name} name, - ADDR{externaddr : externaddr} externaddr + NAME name, + ADDR externaddr } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax moduleinst = { - TYPES{`deftype*` : deftype*} deftype*, - TAGS{`tagaddr*` : tagaddr*} tagaddr*, - GLOBALS{`globaladdr*` : globaladdr*} globaladdr*, - MEMS{`memaddr*` : memaddr*} memaddr*, - TABLES{`tableaddr*` : tableaddr*} tableaddr*, - FUNCS{`funcaddr*` : funcaddr*} funcaddr*, - DATAS{`dataaddr*` : dataaddr*} dataaddr*, - ELEMS{`elemaddr*` : elemaddr*} elemaddr*, - EXPORTS{`exportinst*` : exportinst*} exportinst* + TYPES deftype*, + TAGS tagaddr*, + GLOBALS globaladdr*, + MEMS memaddr*, + TABLES tableaddr*, + FUNCS funcaddr*, + DATAS dataaddr*, + ELEMS elemaddr*, + EXPORTS exportinst* +} + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax structaddr = addr + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +syntax ref = + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax val = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax frame = { - LOCALS{`val?*` : val?*} val?*, - MODULE{moduleinst : moduleinst} moduleinst + LOCALS val?*, + MODULE moduleinst } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:136.1-142.9 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE | DROP - | SELECT{`valtype*?` : valtype*?}(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`} : valtype*?) - | BLOCK{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | LOOP{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*) - | `IF%%ELSE%`{blocktype : blocktype, `instr*` : instr*}(blocktype : blocktype, instr*{instr <- `instr*`} : instr*, instr*) - | BR{labelidx : labelidx}(labelidx : labelidx) - | BR_IF{labelidx : labelidx}(labelidx : labelidx) - | BR_TABLE{`labelidx*` : labelidx*}(labelidx*{labelidx <- `labelidx*`} : labelidx*, labelidx) - | BR_ON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_NON_NULL{labelidx : labelidx}(labelidx : labelidx) - | BR_ON_CAST{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | BR_ON_CAST_FAIL{labelidx : labelidx, reftype : reftype}(labelidx : labelidx, reftype : reftype, reftype) - | CALL{funcidx : funcidx}(funcidx : funcidx) - | CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) + | SELECT(valtype*?) + | BLOCK(blocktype : blocktype, `instr*` : instr*) + | LOOP(blocktype : blocktype, `instr*` : instr*) + | `IF%%ELSE%`(blocktype : blocktype, `instr*` : instr*, `instr*` : instr*) + | BR(labelidx) + | BR_IF(labelidx) + | BR_TABLE(`labelidx*` : labelidx*, labelidx : labelidx) + | BR_ON_NULL(labelidx) + | BR_ON_NON_NULL(labelidx) + | BR_ON_CAST(labelidx : labelidx, reftype : reftype, reftype : reftype) + | BR_ON_CAST_FAIL(labelidx : labelidx, reftype : reftype, reftype : reftype) + | CALL(funcidx) + | CALL_REF(typeuse) + | CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) | RETURN - | RETURN_CALL{funcidx : funcidx}(funcidx : funcidx) - | RETURN_CALL_REF{typeuse : typeuse}(typeuse : typeuse) - | RETURN_CALL_INDIRECT{tableidx : tableidx, typeuse : typeuse}(tableidx : tableidx, typeuse : typeuse) - | THROW{tagidx : tagidx}(tagidx : tagidx) + | RETURN_CALL(funcidx) + | RETURN_CALL_REF(typeuse) + | RETURN_CALL_INDIRECT(tableidx : tableidx, typeuse : typeuse) + | THROW(tagidx) | THROW_REF - | TRY_TABLE{blocktype : blocktype, list : list(syntax catch), `instr*` : instr*}(blocktype : blocktype, list : list(syntax catch), instr*{instr <- `instr*`} : instr*) - | LOCAL.GET{localidx : localidx}(localidx : localidx) - | LOCAL.SET{localidx : localidx}(localidx : localidx) - | LOCAL.TEE{localidx : localidx}(localidx : localidx) - | GLOBAL.GET{globalidx : globalidx}(globalidx : globalidx) - | GLOBAL.SET{globalidx : globalidx}(globalidx : globalidx) - | TABLE.GET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SET{tableidx : tableidx}(tableidx : tableidx) - | TABLE.SIZE{tableidx : tableidx}(tableidx : tableidx) - | TABLE.GROW{tableidx : tableidx}(tableidx : tableidx) - | TABLE.FILL{tableidx : tableidx}(tableidx : tableidx) - | TABLE.COPY{tableidx : tableidx}(tableidx : tableidx, tableidx) - | TABLE.INIT{tableidx : tableidx, elemidx : elemidx}(tableidx : tableidx, elemidx : elemidx) - | ELEM.DROP{elemidx : elemidx}(elemidx : elemidx) - | LOAD{numtype : numtype, `loadop_?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, loadop_?{loadop_ <- `loadop_?`} : loadop_(numtype)?, memidx : memidx, memarg : memarg) - | STORE{numtype : numtype, `storeop_?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(numtype : numtype, storeop_?{storeop_ <- `storeop_?`} : storeop_(numtype)?, memidx : memidx, memarg : memarg) - | VLOAD{vectype : vectype, `vloadop_?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(vectype : vectype, vloadop_?{vloadop_ <- `vloadop_?`} : vloadop_(vectype)?, memidx : memidx, memarg : memarg) - | VLOAD_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | VSTORE{vectype : vectype, memidx : memidx, memarg : memarg}(vectype : vectype, memidx : memidx, memarg : memarg) - | VSTORE_LANE{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) - | MEMORY.SIZE{memidx : memidx}(memidx : memidx) - | MEMORY.GROW{memidx : memidx}(memidx : memidx) - | MEMORY.FILL{memidx : memidx}(memidx : memidx) - | MEMORY.COPY{memidx : memidx}(memidx : memidx, memidx) - | MEMORY.INIT{memidx : memidx, dataidx : dataidx}(memidx : memidx, dataidx : dataidx) - | DATA.DROP{dataidx : dataidx}(dataidx : dataidx) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.IS_NULL - | REF.AS_NON_NULL - | REF.EQ - | REF.TEST{reftype : reftype}(reftype : reftype) - | REF.CAST{reftype : reftype}(reftype : reftype) - | REF.FUNC{funcidx : funcidx}(funcidx : funcidx) - | REF.I31 - | I31.GET{sx : sx}(sx : sx) - | STRUCT.NEW{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | STRUCT.GET{`sx?` : sx?, typeidx : typeidx, u32 : u32}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx, u32 : u32) - | STRUCT.SET{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_DEFAULT{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.NEW_FIXED{typeidx : typeidx, u32 : u32}(typeidx : typeidx, u32 : u32) - | ARRAY.NEW_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.NEW_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | ARRAY.GET{`sx?` : sx?, typeidx : typeidx}(sx?{sx <- `sx?`} : sx?, typeidx : typeidx) - | ARRAY.SET{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.LEN - | ARRAY.FILL{typeidx : typeidx}(typeidx : typeidx) - | ARRAY.COPY{typeidx : typeidx}(typeidx : typeidx, typeidx) - | ARRAY.INIT_DATA{typeidx : typeidx, dataidx : dataidx}(typeidx : typeidx, dataidx : dataidx) - | ARRAY.INIT_ELEM{typeidx : typeidx, elemidx : elemidx}(typeidx : typeidx, elemidx : elemidx) - | EXTERN.CONVERT_ANY - | ANY.CONVERT_EXTERN - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | UNOP{numtype : numtype, unop_ : unop_(numtype)}(numtype : numtype, unop_ : unop_(numtype)) - | BINOP{numtype : numtype, binop_ : binop_(numtype)}(numtype : numtype, binop_ : binop_(numtype)) - | TESTOP{numtype : numtype, testop_ : testop_(numtype)}(numtype : numtype, testop_ : testop_(numtype)) - | RELOP{numtype : numtype, relop_ : relop_(numtype)}(numtype : numtype, relop_ : relop_(numtype)) - | CVTOP{numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)}(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_2, numtype_1)) - | WIDEOP{numtype : numtype, wideop_ : wideop_(numtype)}(numtype : numtype, wideop_ : wideop_(numtype)) - | EXTWIDEOP{numtype : numtype, extwideop_ : extwideop_(numtype)}(numtype : numtype, extwideop_ : extwideop_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | VVUNOP{vectype : vectype, vvunop : vvunop}(vectype : vectype, vvunop : vvunop) - | VVBINOP{vectype : vectype, vvbinop : vvbinop}(vectype : vectype, vvbinop : vvbinop) - | VVTERNOP{vectype : vectype, vvternop : vvternop}(vectype : vectype, vvternop : vvternop) - | VVTESTOP{vectype : vectype, vvtestop : vvtestop}(vectype : vectype, vvtestop : vvtestop) - | VUNOP{shape : shape, vunop_ : vunop_(shape)}(shape : shape, vunop_ : vunop_(shape)) - | VBINOP{shape : shape, vbinop_ : vbinop_(shape)}(shape : shape, vbinop_ : vbinop_(shape)) - | VTERNOP{shape : shape, vternop_ : vternop_(shape)}(shape : shape, vternop_ : vternop_(shape)) - | VTESTOP{shape : shape, vtestop_ : vtestop_(shape)}(shape : shape, vtestop_ : vtestop_(shape)) - | VRELOP{shape : shape, vrelop_ : vrelop_(shape)}(shape : shape, vrelop_ : vrelop_(shape)) - | VSHIFTOP{ishape : ishape, vshiftop_ : vshiftop_(ishape)}(ishape : ishape, vshiftop_ : vshiftop_(ishape)) - | VBITMASK{ishape : ishape}(ishape : ishape) - | VSWIZZLOP{bshape : bshape, vswizzlop_ : vswizzlop_(bshape)}(bshape : bshape, vswizzlop_ : vswizzlop_(bshape)) - | VSHUFFLE{bshape : bshape, `laneidx*` : laneidx*}(bshape : bshape, laneidx*{laneidx <- `laneidx*`} : laneidx*) - -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|) = $dim(bshape!`%`_bshape.0)) - | VEXTUNOP{ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_2, ishape_1)) - | VEXTBINOP{ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_2, ishape_1)) - | VEXTTERNOP{ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)}(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_2, ishape_1)) - | VNARROW{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(ishape_1 : ishape, ishape_2 : ishape, sx : sx) + | TRY_TABLE(blocktype : blocktype, list(syntax catch), `instr*` : instr*) + | `LOCAL.GET`(localidx) + | `LOCAL.SET`(localidx) + | `LOCAL.TEE`(localidx) + | `GLOBAL.GET`(globalidx) + | `GLOBAL.SET`(globalidx) + | `TABLE.GET`(tableidx) + | `TABLE.SET`(tableidx) + | `TABLE.SIZE`(tableidx) + | `TABLE.GROW`(tableidx) + | `TABLE.FILL`(tableidx) + | `TABLE.COPY`(tableidx : tableidx, tableidx : tableidx) + | `TABLE.INIT`(tableidx : tableidx, elemidx : elemidx) + | `ELEM.DROP`(elemidx) + | LOAD(numtype : numtype, loadop_(numtype)?, memidx : memidx, memarg : memarg) + | STORE(numtype : numtype, storeop_(numtype)?, memidx : memidx, memarg : memarg) + | VLOAD(vectype : vectype, vloadop_(vectype)?, memidx : memidx, memarg : memarg) + | VLOAD_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | VSTORE(vectype : vectype, memidx : memidx, memarg : memarg) + | VSTORE_LANE(vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx) + | `MEMORY.SIZE`(memidx) + | `MEMORY.GROW`(memidx) + | `MEMORY.FILL`(memidx) + | `MEMORY.COPY`(memidx : memidx, memidx : memidx) + | `MEMORY.INIT`(memidx : memidx, dataidx : dataidx) + | `DATA.DROP`(dataidx) + | `REF.NULL`(heaptype) + | `REF.IS_NULL` + | `REF.AS_NON_NULL` + | `REF.EQ` + | `REF.TEST`(reftype) + | `REF.CAST`(reftype) + | `REF.FUNC`(funcidx) + | `REF.I31` + | `I31.GET`(sx) + | `STRUCT.NEW`(typeidx) + | `STRUCT.NEW_DEFAULT`(typeidx) + | `STRUCT.GET`(`sx?` : sx?, typeidx : typeidx, fieldidx : fieldidx) + | `STRUCT.SET`(typeidx : typeidx, fieldidx : fieldidx) + | `ARRAY.NEW`(typeidx) + | `ARRAY.NEW_DEFAULT`(typeidx) + | `ARRAY.NEW_FIXED`(typeidx : typeidx, u32 : u32) + | `ARRAY.NEW_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.NEW_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `ARRAY.GET`(`sx?` : sx?, typeidx : typeidx) + | `ARRAY.SET`(typeidx) + | `ARRAY.LEN` + | `ARRAY.FILL`(typeidx) + | `ARRAY.COPY`(typeidx : typeidx, typeidx : typeidx) + | `ARRAY.INIT_DATA`(typeidx : typeidx, dataidx : dataidx) + | `ARRAY.INIT_ELEM`(typeidx : typeidx, elemidx : elemidx) + | `EXTERN.CONVERT_ANY` + | `ANY.CONVERT_EXTERN` + | CONST(numtype : numtype, num_(numtype)) + | UNOP(numtype : numtype, unop_(numtype)) + | BINOP(numtype : numtype, binop_(numtype)) + | TESTOP(numtype : numtype, testop_(numtype)) + | RELOP(numtype : numtype, relop_(numtype)) + | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | VVUNOP(vectype : vectype, vvunop : vvunop) + | VVBINOP(vectype : vectype, vvbinop : vvbinop) + | VVTERNOP(vectype : vectype, vvternop : vvternop) + | VVTESTOP(vectype : vectype, vvtestop : vvtestop) + | VUNOP(shape : shape, vunop_(shape)) + | VBINOP(shape : shape, vbinop_(shape)) + | VTERNOP(shape : shape, vternop_(shape)) + | VTESTOP(shape : shape, vtestop_(shape)) + | VRELOP(shape : shape, vrelop_(shape)) + | VSHIFTOP(ishape : ishape, vshiftop_(ishape)) + | VBITMASK(ishape) + | VSWIZZLOP(bshape : bshape, vswizzlop_(bshape)) + | VSHUFFLE(bshape : bshape, `laneidx*` : laneidx*) + -- if (`%`_dim(|laneidx*{laneidx <- `laneidx*`}|,) = $dim(bshape!`%`_bshape.0)) + | VEXTUNOP(ishape_1 : ishape, ishape_2 : ishape, vextunop__(ishape_2, ishape_1)) + | VEXTBINOP(ishape_1 : ishape, ishape_2 : ishape, vextbinop__(ishape_2, ishape_1)) + | VEXTTERNOP(ishape_1 : ishape, ishape_2 : ishape, vextternop__(ishape_2, ishape_1)) + | VNARROW(ishape_1 : ishape, ishape_2 : ishape, sx : sx) -- if (($lsize($lanetype(ishape_2!`%`_ishape.0)) = (2 * $lsize($lanetype(ishape_1!`%`_ishape.0)))) /\ ((2 * $lsize($lanetype(ishape_1!`%`_ishape.0))) <= 32)) - | VCVTOP{shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)}(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_2, shape_1)) - | VSPLAT{shape : shape}(shape : shape) - | VEXTRACT_LANE{shape : shape, `sx?` : sx?, laneidx : laneidx}(shape : shape, sx?{sx <- `sx?`} : sx?, laneidx : laneidx) + | VCVTOP(shape_1 : shape, shape_2 : shape, vcvtop__(shape_2, shape_1)) + | VSPLAT(shape) + | VEXTRACT_LANE(shape : shape, `sx?` : sx?, laneidx : laneidx) -- if ((sx?{sx <- `sx?`} = ?()) <=> ($lanetype(shape) <- [I32_lanetype I64_lanetype F32_lanetype F64_lanetype])) - | VREPLACE_LANE{shape : shape, laneidx : laneidx}(shape : shape, laneidx : laneidx) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | `LABEL_%{%}%`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*, instr*) - | `FRAME_%{%}%`{n : n, frame : frame, `instr*` : instr*}(n : n, frame : frame, instr*{instr <- `instr*`} : instr*) - | `HANDLER_%{%}%`{n : n, `catch*` : catch*, `instr*` : instr*}(n : n, catch*{catch <- `catch*`} : catch*, instr*{instr <- `instr*`} : instr*) + | VREPLACE_LANE(shape : shape, laneidx : laneidx) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | `LABEL_%{%}%`(n : n, `instr*` : instr*, `instr*` : instr*) + | `FRAME_%{%}%`(n : n, frame : frame, `instr*` : instr*) + | `HANDLER_%{%}%`(n : n, `catch*` : catch*, `instr*` : instr*) | TRAP } @@ -25022,14 +26168,14 @@ syntax expr = instr* ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $memarg0 : memarg ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $memarg0 = {ALIGN `%`_u32(0), OFFSET `%`_u32(0)} + def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{numtype : numtype, c : lit_((numtype : numtype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) + def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $const{vectype : vectype, c : lit_((vectype : vectype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) + def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free @@ -25041,232 +26187,249 @@ def $free_blocktype(blocktype : blocktype) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec - def $free_blocktype{funcidx : funcidx}(_IDX_blocktype(funcidx)) = $free_funcidx(funcidx) + def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +def $free_catch(catch : catch) : free + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-583.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:584.1-584.66 - def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.91 - def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat))] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:427.1-427.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.26 - def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.34 - def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:440.1-440.27 - def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-443.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:444.1-444.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:445.1-446.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-451.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-453.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-457.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-459.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-462.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:463.1-463.29 - def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-464.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:465.1-465.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:466.1-467.53 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:469.1-469.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:470.1-470.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:471.1-471.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:472.1-472.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:473.1-473.62 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:474.1-475.55 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:477.1-477.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:478.1-478.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:479.1-479.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:480.1-480.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:481.1-481.68 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:482.1-482.56 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:483.1-483.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:484.1-484.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:485.1-485.60 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:486.1-486.58 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:487.1-487.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:488.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:491.1-492.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:493.1-494.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:495.1-496.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:497.1-498.49 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:499.1-500.47 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:501.1-501.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.70 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:503.1-503.66 + ;; ../../../../specification/wasm-3.0/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-3.0/1.3-syntax.instructions.spectec:505.1-505.62 - def $free_instr{heaptype : heaptype}(REF.NULL_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.34 - def $free_instr(REF.IS_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:507.1-507.38 - def $free_instr(REF.AS_NON_NULL_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.29 - def $free_instr(REF.EQ_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.59 - def $free_instr{reftype : reftype}(REF.TEST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.59 - def $free_instr{reftype : reftype}(REF.CAST_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.59 - def $free_instr{funcidx : funcidx}(REF.FUNC_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.30 - def $free_instr(REF.I31_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.33 - def $free_instr{sx : sx}(I31.GET_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.41 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_instr(typeidx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.69 - def $free_instr{typeidx : typeidx}(STRUCT.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.69 - def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(STRUCT.GET_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.65 - def $free_instr{typeidx : typeidx, u32 : u32}(STRUCT.SET_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.60 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.68 - def $free_instr{typeidx : typeidx}(ARRAY.NEW_DEFAULT_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.70 - def $free_instr{typeidx : typeidx, u32 : u32}(ARRAY.NEW_FIXED_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-525.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.NEW_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-527.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.NEW_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:528.1-528.64 - def $free_instr{`sx?` : sx?, typeidx : typeidx}(ARRAY.GET_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.60 - def $free_instr{typeidx : typeidx}(ARRAY.SET_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.32 - def $free_instr(ARRAY.LEN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.61 - def $free_instr{typeidx : typeidx}(ARRAY.FILL_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-533.55 - def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(ARRAY.COPY_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-535.51 - def $free_instr{typeidx : typeidx, dataidx : dataidx}(ARRAY.INIT_DATA_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-537.51 - def $free_instr{typeidx : typeidx, elemidx : elemidx}(ARRAY.INIT_ELEM_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-539.41 - def $free_instr(EXTERN.CONVERT_ANY_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:540.1-540.41 - def $free_instr(ANY.CONVERT_EXTERN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.63 - def $free_instr{localidx : localidx}(LOCAL.GET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.63 - def $free_instr{localidx : localidx}(LOCAL.SET_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.63 - def $free_instr{localidx : localidx}(LOCAL.TEE_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.67 - def $free_instr{globalidx : globalidx}(GLOBAL.GET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.67 - def $free_instr{globalidx : globalidx}(GLOBAL.SET_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.63 - def $free_instr{tableidx : tableidx}(TABLE.GET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.63 - def $free_instr{tableidx : tableidx}(TABLE.SET_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:551.1-551.64 - def $free_instr{tableidx : tableidx}(TABLE.SIZE_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.64 - def $free_instr{tableidx : tableidx}(TABLE.GROW_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.64 - def $free_instr{tableidx : tableidx}(TABLE.FILL_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-555.59 - def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(TABLE.COPY_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-557.53 - def $free_instr{tableidx : tableidx, elemidx : elemidx}(TABLE.INIT_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:558.1-558.60 - def $free_instr{elemidx : elemidx}(ELEM.DROP_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-561.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) + ;; ../../../../specification/wasm-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-563.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-565.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-567.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:568.1-569.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:570.1-571.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:572.1-572.59 - def $free_instr{memidx : memidx}(MEMORY.SIZE_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-573.59 - def $free_instr{memidx : memidx}(MEMORY.GROW_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:574.1-574.59 - def $free_instr{memidx : memidx}(MEMORY.FILL_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.51 - def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(MEMORY.COPY_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 - def $free_instr{memidx : memidx, dataidx : dataidx}(MEMORY.INIT_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-579.60 - def $free_instr{dataidx : dataidx}(DATA.DROP_instr(dataidx)) = $free_dataidx(dataidx) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:428.1-428.31 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) + +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-588.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.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*`})) } @@ -25278,66 +26441,66 @@ def $free_expr(expr : expr) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elemmode = - | ACTIVE{tableidx : tableidx, expr : expr}(tableidx : tableidx, expr : expr) + | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax datamode = - | ACTIVE{memidx : memidx, expr : expr}(memidx : memidx, expr : expr) + | ACTIVE(memidx : memidx, expr : expr) | PASSIVE ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax type = - | TYPE{rectype : rectype}(rectype : rectype) + | TYPE(rectype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax tag = - | TAG{tagtype : tagtype}(tagtype : tagtype) + | TAG(tagtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax global = - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) + | GLOBAL(globaltype : globaltype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax mem = - | MEMORY{memtype : memtype}(memtype : memtype) + | MEMORY(memtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax table = - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) + | TABLE(tabletype : tabletype, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax data = - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) + | DATA(`byte*` : byte*, datamode : datamode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax local = - | LOCAL{valtype : valtype}(valtype : valtype) + | LOCAL(valtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax func = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax elem = - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax start = - | START{funcidx : funcidx}(funcidx : funcidx) + | START(funcidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax import = - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) + | IMPORT(name : name, name : name, externtype : externtype) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax export = - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) + | EXPORT(name : name, externidx : externidx) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec syntax module = - | MODULE{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(type*{type <- `type*`} : type*, import*{import <- `import*`} : import*, tag*{tag <- `tag*`} : tag*, global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, func*{func <- `func*`} : func*, data*{data <- `data*`} : data*, elem*{elem <- `elem*`} : elem*, start?{start <- `start?`} : start?, export*{export <- `export*`} : export*) + | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_type(type : type) : free @@ -25379,7 +26542,7 @@ def $free_datamode(datamode : datamode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_data(data : data) : free @@ -25391,9 +26554,9 @@ def $free_elemmode(elemmode : elemmode) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS []} + def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free @@ -25418,7 +26581,7 @@ def $free_export(export : export) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $free_module(module : module) : free ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec - def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) + def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* @@ -25437,49 +26600,49 @@ syntax init = ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax localtype = - | `%%`{init : init, valtype : valtype}(init : init, valtype : valtype) + | `%%`(init : init, valtype : valtype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax instrtype = - | `%->_%%`{resulttype : resulttype, `localidx*` : localidx*}(resulttype : resulttype, localidx*{localidx <- `localidx*`} : localidx*, resulttype) + | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec syntax context = { - TYPES{`deftype*` : deftype*} deftype*, - RECS{`subtype*` : subtype*} subtype*, - TAGS{`tagtype*` : tagtype*} tagtype*, - GLOBALS{`globaltype*` : globaltype*} globaltype*, - MEMS{`memtype*` : memtype*} memtype*, - TABLES{`tabletype*` : tabletype*} tabletype*, - FUNCS{`deftype*` : deftype*} deftype*, - DATAS{`datatype*` : datatype*} datatype*, - ELEMS{`elemtype*` : elemtype*} elemtype*, - LOCALS{`localtype*` : localtype*} localtype*, - LABELS{`resulttype*` : resulttype*} resulttype*, - RETURN{`resulttype?` : resulttype?} resulttype?, - REFS{`funcidx*` : funcidx*} funcidx* + TYPES deftype*, + TAGS tagtype*, + GLOBALS globaltype*, + MEMS memtype*, + TABLES tabletype*, + FUNCS deftype*, + DATAS datatype*, + ELEMS elemtype*, + LOCALS localtype*, + LABELS resulttype*, + RETURN resulttype?, + REFS funcidx*, + RECS subtype* } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:46.1-46.144 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:48.1-48.34 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.90 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:59.1-59.94 +;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:68.1-68.30 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:69.1-69.101 + ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } @@ -25527,12 +26690,8 @@ relation Vectype_ok: `%|-%:OK`(context, vectype) `%|-%:OK`(C, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidx = - | OK{typeidx : typeidx}(typeidx : typeidx) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -syntax oktypeidxnat = - | OK{typeidx : typeidx, nat : nat}(typeidx : typeidx, nat : nat) +syntax oktypenat = + | OK(nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) @@ -25555,9 +26714,9 @@ relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{deftype : deftype, comptype : comptype}: + rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) - -- if ($expanddt(deftype) = comptype) + -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) @@ -25566,22 +26725,21 @@ relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) `%|-%<:%`(C, vectype, vectype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $before(typeuse : typeuse, typeidx : typeidx, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{deftype : deftype, x : idx, i : nat}((deftype : deftype <: typeuse), x, i) = true +def $before(typeuse : typeuse, nat : nat) : bool ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{typeidx : typeidx, x : idx, i : nat}(_IDX_typeuse(typeidx), x, i) = (typeidx!`%`_typeidx.0 < x!`%`_idx.0) + def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $before{j : n, x : idx, i : nat}(REC_typeuse(j), x, i) = (j < i) + def $before{typeuse : typeuse, i : nat}(typeuse, i) = true + -- otherwise ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec -def $unrollht(context : context, heaptype : heaptype) : subtype +def $unrollht_(context : context, heaptype : heaptype) : subtype ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) + def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) + def $unrollht_{C : context, typeidx : typeidx}(C, _IDX_heaptype(typeidx)) = $unrolldt(C.TYPES_context[typeidx!`%`_typeidx.0]) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - def $unrollht{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] + def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rec { @@ -25597,189 +26755,163 @@ relation Heaptype_ok: `%|-%:OK`(context, heaptype) `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + rule bot{C : context}: + `%|-%:OK`(C, BOT_heaptype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-29.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:31.1-33.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:35.1-37.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:39.1-41.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:43.1-44.16 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-101.30 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.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-3.0/2.1-validation.types.spectec:103.1-105.23 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.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-3.0/2.1-validation.types.spectec:107.1-109.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:49.1-49.100 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:52.1-54.32 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: - `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:85.1-85.104 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:123.1-125.43 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:86.1-86.106 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:115.1-117.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:87.1-87.103 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:128.1-130.42 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: - `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:132.1-134.39 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:136.1-139.35 + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:88.1-88.126 -relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:142.1-149.49 - rule _{C : context, `x*` : idx*, comptype : comptype, x_0 : idx, `x'**` : idx**, `comptype'*` : comptype*}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, _IDX_typeuse(x)*{x <- `x*`}, comptype), OK_oktypeidx(x_0)) - -- if (|x*{x <- `x*`}| <= 1) - -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} - -- if (|`comptype'*`| = |`x*`|) - -- if (|`comptype'*`| = |`x'**`|) - -- (if (x!`%`_idx.0 < |C.TYPES_context|))*{x <- `x*`} - -- (if ($unrolldt(C.TYPES_context[x!`%`_idx.0]) = SUB_subtype(?(), _IDX_typeuse(x')*{x' <- `x'*`}, comptype')))*{comptype' <- `comptype'*`, x <- `x*`, `x'*` <- `x'**`} - -- Comptype_ok: `%|-%:OK`(C, comptype) - -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:89.1-89.126 -relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:171.1-172.23 - rule empty{C : context, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidx(x)) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:174.1-177.48 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) - -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1)))) - - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-181.60 - rule _rec2{C : context, `subtype*` : subtype*, x : idx}: - `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidx(x)) - -- Rectype_ok2: `%|-%:%`({TYPES [], RECS subtype*{subtype <- `subtype*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []} +++ C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, 0)) - -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:90.1-90.126 -relation Subtype_ok2: `%|-%:%`(context, subtype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:161.1-168.49 - rule _{C : context, `typeuse*` : typeuse*, compttype : comptype, x : idx, i : nat, `typeuse'**` : typeuse**, `comptype'*` : comptype*, comptype : comptype}: - `%|-%:%`(C, SUB_subtype(FINAL_final?{}, typeuse*{typeuse <- `typeuse*`}, compttype), OK_oktypeidxnat(x, i)) + `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) + ;; ../../../../specification/wasm-3.0/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) - -- (if $before(typeuse, x, i))*{typeuse <- `typeuse*`} + -- (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'**`} + -- (if ($unrollht_(C, (typeuse : typeuse <: heaptype)) = SUB_subtype(?(), typeuse'*{typeuse' <- `typeuse'*`}, comptype')))*{comptype' <- `comptype'*`, typeuse <- `typeuse*`, `typeuse'*` <- `typeuse'**`} -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:91.1-91.126 -relation Rectype_ok2: `%|-%:%`(context, rectype, oktypeidxnat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:183.1-184.24 - rule empty{C : context, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([])), OK_oktypeidxnat(x, i)) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + rule empty{C : context, i : nat}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:186.1-189.55 - rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx, i : nat}: - `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(x, i)) - -- Subtype_ok2: `%|-%:%`(C, subtype_1, OK_oktypeidxnat(x, i)) - -- Rectype_ok2: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`})), OK_oktypeidxnat(`%`_typeidx((x!`%`_idx.0 + 1)), (i + 1))) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:92.1-92.102 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:192.1-196.14 - rule _{C : context, rectype : rectype, i : n, x : idx, `subtype*` : subtype*, n : n}: + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + rule _{C : context, rectype : rectype, i : n, n : n, `subtype*` : subtype*}: `%|-%:OK`(C, _DEF_deftype(rectype, i)) - -- Rectype_ok: `%|-%:%`(C, rectype, OK_oktypeidx(x)) - -- if (rectype = REC_rectype(`%`_list(subtype^n{subtype <- `subtype*`}))) + -- 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-3.0/2.1-validation.types.spectec:95.1-95.108 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:165.1-167.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: - `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`})), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`}))) + `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- if (|`ft_1*`| = |`ft_2*`|) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:169.1-171.38 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:173.1-176.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.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*`})) + `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.107 +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:179.1-181.66 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:183.1-186.49 + ;; ../../../../specification/wasm-3.0/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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) @@ -25818,7 +26950,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) - -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`}))) + -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: @@ -25828,7 +26960,7 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) - -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: @@ -25847,111 +26979,140 @@ relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.43 - rule rec{C : context, i : n, `typeuse*` : typeuse*, j : nat, `final?` : final?, ct : comptype}: + ;; ../../../../specification/wasm-3.0/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 (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},)))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: + `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) + -- if (i < |C.RECS_context|) + -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%<:%`(C, REC_heaptype(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*`},)))) + + ;; ../../../../specification/wasm-3.0/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 (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.41 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-83.43 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) + -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:85.1-86.23 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:89.1-91.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:93.1-95.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:98.1-100.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:102.1-104.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:106.1-108.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:110.1-111.22 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:116.1-116.115 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:119.1-121.37 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.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*`})) + `%|-%<:%`(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-3.0/2.2-validation.subtyping.spectec:134.1-134.119 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:146.1-148.46 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-152.49 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-135.117 +;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:155.1-157.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:159.1-162.40 + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Localtype_ok: `%|-%:OK`(context, localtype) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + rule _{C : context, init : init, t : valtype}: + `%|-%:OK`(C, `%%`_localtype(init, t)) + -- Valtype_ok: `%|-%:OK`(C, t) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: - `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`})) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- if (|`lct*`| = |`x*`|) -- (if (x!`%`_idx.0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} @@ -25969,21 +27130,55 @@ relation Expand_use: `%~~_%%`(typeuse, context, comptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +syntax oktypeidx = + | OK(typeidx) + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) + ;; ../../../../specification/wasm-3.0/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)) + -- if (|x*{x <- `x*`}| <= 1) + -- (if (x!`%`_idx.0 < x_0!`%`_idx.0))*{x <- `x*`} + -- if (|`comptype'*`| = |`x*`|) + -- if (|`comptype'*`| = |`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'*`} + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +rec { + +;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + rule empty{C : context, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) + + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: + `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) + -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) +} + ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: - `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n), `%`_u64(m)?{m <- `m?`}), k) + `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec - rule _{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) @@ -25997,14 +27192,14 @@ relation Memtype_ok: `%|-%:OK`(context, memtype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) - -- Limits_ok: `%|-%:%`(C, limits, (2 ^ 16)) + -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) - -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ 32) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) + -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec @@ -26033,15 +27228,15 @@ relation Externtype_ok: `%|-%:OK`(context, externtype) rule func{C : context, typeuse : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, FUNC_externtype(typeuse)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: - `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`})), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`}))) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`}), `%`_resulttype(t_11*{t_11 <- `t_11*`})) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`}), `%`_resulttype(t_22*{t_22 <- `t_22*`})) + `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- if (|`t*`| = |`x*`|) -- (if (x!`%`_idx.0 < |C.LOCALS_context|))*{x <- `x*`} @@ -26050,10 +27245,15 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec - rule _{C : context, n_1 : n, m_1 : m, n_2 : n, m_2 : m}: - `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1), ?(`%`_u64(m_1))), `[%..%]`_limits(`%`_u64(n_2), ?(`%`_u64(m_2)))) + rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) + -- if (n_1 >= n_2) + -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} + + ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + rule eps{C : context, n_1 : n, n_2 : n}: + `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) - -- if (m_1 <= m_2) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) @@ -26116,21 +27316,21 @@ relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec rule func{C : context, deftype_1 : deftype, deftype_2 : deftype}: - `%|-%<:%`(C, FUNC_externtype((deftype_1 : deftype <: typeuse)), FUNC_externtype((deftype_2 : deftype <: typeuse))) + `%|-%<:%`(C, FUNC_externtype(deftype_1 : deftype <: typeuse), FUNC_externtype(deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: - `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`})))) + `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) @@ -26138,54 +27338,62 @@ relation Catch_ok: `%|-%:OK`(context, catch) rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- if (x!`%`_idx.0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- if (x!`%`_idx.0 < |C.TAGS_context|) - -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`}), `%`_resulttype([]))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)]), C.LABELS_context[l!`%`_labelidx.0]) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_(valtype : valtype) : val? ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0))) + def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0))) + def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec - def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(REF.NULL_val(ht)) + def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Defaultable: `|-%DEFAULTABLE`(valtype) +relation Defaultable: `|-%DEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%DEFAULTABLE`(t) + `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) +;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + rule _{n : n, m : m, at : addrtype, N : N}: + `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) + -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- if (m < (2 ^ $size((at : addrtype <: numtype)))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - def $is_packtype{zt : storagetype}(zt) = (zt = ($unpack(zt) : valtype <: storagetype)) + def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rec { @@ -26194,89 +27402,89 @@ rec { relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: - `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: - `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: - `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype]), [], `%`_resulttype([t]))) + `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: - `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: - `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (if (l!`%`_labelidx.0 < |C.LABELS_context|))*{l <- `l*`} - -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} + -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} -- if (l'!`%`_labelidx.0 < |C.LABELS_context|) - -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`}), C.LABELS_context[l'!`%`_labelidx.0]) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)]))) + `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: - `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) - -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)])) + -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 rule br_on_cast{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [($diffrt(rt_1, rt_2) : reftype <: valtype)]))) + `%|-%:%`(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)])) + -- 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) @@ -26284,9 +27492,9 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 rule br_on_cast_fail{C : context, l : labelidx, rt_1 : reftype, rt_2 : reftype, `t*` : valtype*, rt : reftype}: - `%|-%:%`(C, BR_ON_CAST_FAIL_instr(l, rt_1, rt_2), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [(rt_1 : reftype <: valtype)]), [], `%`_resulttype(t*{t <- `t*`} ++ [(rt_2 : reftype <: valtype)]))) + `%|-%:%`(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)])) + -- 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) @@ -26294,221 +27502,221 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`},))) -- 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*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: - `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- 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*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 rule return_call{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(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.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*`}))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(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*`},))) -- 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*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: - `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)]), [], `%`_resulttype(t_4*{t_4 <- `t_4*`}))) + `%|-%:%`(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|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- 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*`}))) - -- 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*`}))) + -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (C.RETURN_context = ?(`%`_resulttype(t'_2*{t'_2 <- `t'_2*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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*`}))) + -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)]), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: - `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + `%|-%:%`(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-3.0/2.3-validation.instructions.spectec:202.1-204.31 - rule ref.null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.NULL_instr(ht), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)]))) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 - rule ref.func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, REF.FUNC_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))]))) + rule `ref.func`{C : context, x : idx, dt : deftype}: + `%|-%:%`(C, `REF.FUNC`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), (dt : deftype <: heaptype))],))) -- if (x!`%`_idx.0 < |C.FUNCS_context|) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 - rule ref.i31{C : context}: - `%|-%:%`(C, REF.I31_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)]))) + rule `ref.i31`{C : context}: + `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 - rule ref.is_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.IS_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.is_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 - rule ref.as_non_null{C : context, ht : heaptype}: - `%|-%:%`(C, REF.AS_NON_NULL_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)]), [], `%`_resulttype([REF_valtype(?(), ht)]))) + rule `ref.as_non_null`{C : context, ht : heaptype}: + `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 - rule ref.eq{C : context}: - `%|-%:%`(C, REF.EQ_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.eq`{C : context}: + `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 - rule ref.test{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.TEST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `ref.test`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 - rule ref.cast{C : context, rt : reftype, rt' : reftype}: - `%|-%:%`(C, REF.CAST_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: + `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 - rule i31.get{C : context, sx : sx}: - `%|-%:%`(C, I31.GET_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `i31.get`{C : context, sx : sx}: + `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 - rule struct.new{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: - `%|-%:%`(C, STRUCT.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `struct.new`{C : context, x : idx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%|-%:%`(C, `STRUCT.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)*{zt <- `zt*`},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 - rule struct.new_default{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: - `%|-%:%`(C, STRUCT.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `struct.new_default`{C : context, x : idx, `mut?*` : mut?*, `zt*` : storagetype*}: + `%|-%:%`(C, `STRUCT.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt)))*{zt <- `zt*`} + -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.39 - rule struct.get{C : context, `sx?` : sx?, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*, `mut?` : mut?}: - `%|-%:%`(C, STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x))]), [], `%`_resulttype([$unpack(zt)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.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)],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (i!`%`_u32.0 < |ft*{ft <- `ft*`}|) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 - rule struct.set{C : context, x : idx, i : u32, zt : storagetype, `ft*` : fieldtype*}: - `%|-%:%`(C, STRUCT.SET_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)]), [], `%`_resulttype([]))) + rule `struct.set`{C : context, x : idx, i : fieldidx, zt : storagetype, `ft*` : fieldtype*}: + `%|-%:%`(C, `STRUCT.SET`_instr(x, i), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) $unpack(zt)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) - -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(ft*{ft <- `ft*`}))) - -- if (i!`%`_u32.0 < |ft*{ft <- `ft*`}|) - -- if (ft*{ft <- `ft*`}[i!`%`_u32.0] = `%%`_fieldtype(?(MUT_mut), zt)) + -- 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-3.0/2.3-validation.instructions.spectec:272.1-274.43 - rule array.new{C : context, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 - rule array.new_default{C : context, x : idx, `mut?` : mut?, zt : storagetype}: - `%|-%:%`(C, ARRAY.NEW_DEFAULT_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: + `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- Defaultable: `|-%DEFAULTABLE`($unpack(zt)) + -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 - rule array.new_fixed{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{}), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 - rule array.new_elem{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: - `%|-%:%`(C, ARRAY.NEW_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: + `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 - rule array.new_data{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.NEW_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))]))) + rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.39 - rule array.get{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%|-%:%`(C, ARRAY.GET_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype]), [], `%`_resulttype([$unpack(zt)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((sx?{sx <- `sx?`} = ?()) <=> $is_packtype(zt)) + -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 - rule array.set{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)]), [], `%`_resulttype([]))) + rule `array.set`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 - rule array.len{C : context}: - `%|-%:%`(C, ARRAY.LEN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)]), [], `%`_resulttype([I32_valtype]))) + rule `array.len`{C : context}: + `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 - rule array.fill{C : context, x : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype]), [], `%`_resulttype([]))) + rule `array.fill`{C : context, x : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 - rule array.copy{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: - `%|-%:%`(C, ARRAY.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: + `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- if (x_2!`%`_idx.0 < |C.TYPES_context|) @@ -26516,16 +27724,16 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 - rule array.init_elem{C : context, x : idx, y : idx, zt : storagetype}: - `%|-%:%`(C, ARRAY.INIT_ELEM_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: + `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 - rule array.init_data{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: - `%|-%:%`(C, ARRAY.INIT_DATA_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: + `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) @@ -26533,78 +27741,78 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 - rule extern.convert_any{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, EXTERN.CONVERT_ANY_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)]))) + rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 - rule any.convert_extern{C : context, `null_1?` : null?, `null_2?` : null?}: - `%|-%:%`(C, ANY.CONVERT_EXTERN_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)]), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)]))) + rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: + `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 - rule local.get{C : context, x : idx, t : valtype}: - `%|-%:%`(C, LOCAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `local.get`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 - rule local.set{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([]))) + rule `local.set`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 - rule local.tee{C : context, x : idx, t : valtype, init : init}: - `%|-%:%`(C, LOCAL.TEE_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [x], `%`_resulttype([t]))) + rule `local.tee`{C : context, x : idx, t : valtype, init : init}: + `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 - rule global.get{C : context, x : idx, t : valtype, `mut?` : mut?}: - `%|-%:%`(C, GLOBAL.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) + rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: + `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 - rule global.set{C : context, x : idx, t : valtype}: - `%|-%:%`(C, GLOBAL.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([t]), [], `%`_resulttype([]))) + rule `global.set`{C : context, x : idx, t : valtype}: + `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 - rule table.get{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.GET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(rt : reftype <: valtype)]))) + rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 - rule table.set{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.SET_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)]), [], `%`_resulttype([]))) + rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 - rule table.size{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: - `%|-%:%`(C, TABLE.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: + `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 - rule table.grow{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: - `%|-%:%`(C, TABLE.GROW_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: + `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 - rule table.fill{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: - `%|-%:%`(C, TABLE.FILL_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: + `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 - rule table.copy{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: - `%|-%:%`(C, TABLE.COPY_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)]), [], `%`_resulttype([]))) + rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (x_2!`%`_idx.0 < |C.TABLES_context|) @@ -26612,8 +27820,8 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 - rule table.init{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: - `%|-%:%`(C, TABLE.INIT_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype]), [], `%`_resulttype([]))) + rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: + `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (y!`%`_idx.0 < |C.ELEMS_context|) @@ -26621,295 +27829,300 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 - rule elem.drop{C : context, x : idx, rt : reftype}: - `%|-%:%`(C, ELEM.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + rule `elem.drop`{C : context, x : idx, rt : reftype}: + `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.ELEMS_context|) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:408.1-410.32 - rule memory.size{C : context, x : idx, at : addrtype, lim : limits}: - `%|-%:%`(C, MEMORY.SIZE_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(at : addrtype <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:412.1-414.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)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-423.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: + `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (x_2!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:425.1-428.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([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: + `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:430.1-432.24 - rule data.drop{C : context, x : idx}: - `%|-%:%`(C, DATA.DROP_instr(x), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + rule `data.drop`{C : context, x : idx}: + `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:443.1-446.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:448.1-451.35 - rule `load-pack`{C : context, Inn : Inn, M : M, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(M), sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([(Inn : Inn <: valtype)]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:462.1-465.43 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($size(nt) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:467.1-470.35 - rule `store-pack`{C : context, Inn : Inn, M : M, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(M))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (Inn : Inn <: valtype)]), [], `%`_resulttype([]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((M : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, K) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:472.1-475.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:477.1-480.39 - rule `vload-pack`{C : context, M : M, N : N, sx : sx, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), N, sx)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (((M : nat <:> rat) / (8 : nat <:> rat)) * (N : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, (N * M!`%`_M.0)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:482.1-485.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:487.1-490.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:492.1-496.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(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|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:498.1-501.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= (($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:503.1-507.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: - `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype]), [], `%`_resulttype([]))) + `%|-%:%`(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|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - -- if (((2 ^ memarg.ALIGN_memarg!`%`_u32.0) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) + -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:512.1-513.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: - `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:515.1-516.34 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: - `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:518.1-519.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: - `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype)]))) + `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:521.1-522.39 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: - `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:524.1-525.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: - `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:527.1-528.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: - `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)]), [], `%`_resulttype([(nt_1 : numtype <: valtype)]))) + `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:530.1-531.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:533.1-534.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)]))) + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:539.1-540.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: - `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:542.1-543.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: - `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:545.1-546.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: - `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:548.1-549.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: - `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:551.1-552.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: - `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:554.1-555.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: - `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:557.1-558.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: - `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:560.1-561.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: - `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:563.1-564.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: - `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:566.1-567.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: - `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:569.1-570.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: - `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:572.1-573.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: - `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([I32_valtype]))) + `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:575.1-576.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: - `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:578.1-580.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: - `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:582.1-583.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: - `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:585.1-587.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: - `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)]))) + `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:589.1-591.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: - `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-594.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:596.1-597.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:599.1-600.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: - `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:602.1-603.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: - `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:605.1-606.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: - `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype]), [], `%`_resulttype([V128_valtype]))) + `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:611.1-612.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: - `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([]))) + `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:615.1-619.82 - rule seq{C : context, instr_1 : instr, `instr_2*` : instr*, `t_1*` : valtype*, `x_1*` : idx*, `x_2*` : idx*, `t_3*` : valtype*, `t_2*` : valtype*, `init*` : init*, `t*` : valtype*}: - `%|-%:%`(C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`}))) - -- Instr_ok: `%|-%:%`(C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:627.1-631.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 (|`init*`| = |`t*`|) -- if (|`init*`| = |`x_1*`|) -- (if (x_1!`%`_idx.0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} -- (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*`}))) + -- Instrs_ok: `%|-%:%`($with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:628.1-631.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`}))) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`})) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: - `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`})) - -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(t*{t <- `t*`}))) + `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec -relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype) +relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rule _{t : valtype}: - `|-%NONDEFAULTABLE`(t) + `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec @@ -26923,48 +28136,48 @@ relation Instr_const: `%|-%CONST`(context, instr) `%|-%CONST`(C, VCONST_instr(vt, c_vt)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.null{C : context, ht : heaptype}: - `%|-%CONST`(C, REF.NULL_instr(ht)) + rule `ref.null`{C : context, ht : heaptype}: + `%|-%CONST`(C, `REF.NULL`_instr(ht)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.i31{C : context}: - `%|-%CONST`(C, REF.I31_instr) + rule `ref.i31`{C : context}: + `%|-%CONST`(C, `REF.I31`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule ref.func{C : context, x : idx}: - `%|-%CONST`(C, REF.FUNC_instr(x)) + rule `ref.func`{C : context, x : idx}: + `%|-%CONST`(C, `REF.FUNC`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_instr(x)) + rule `struct.new`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule struct.new_default{C : context, x : idx}: - `%|-%CONST`(C, STRUCT.NEW_DEFAULT_instr(x)) + rule `struct.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_instr(x)) + rule `array.new`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_default{C : context, x : idx}: - `%|-%CONST`(C, ARRAY.NEW_DEFAULT_instr(x)) + rule `array.new_default`{C : context, x : idx}: + `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule array.new_fixed{C : context, x : idx, n : n}: - `%|-%CONST`(C, ARRAY.NEW_FIXED_instr(x, `%`_u32(n))) + rule `array.new_fixed`{C : context, x : idx, n : n}: + `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule any.convert_extern{C : context}: - `%|-%CONST`(C, ANY.CONVERT_EXTERN_instr) + rule `any.convert_extern`{C : context}: + `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule extern.convert_any{C : context}: - `%|-%CONST`(C, EXTERN.CONVERT_ANY_instr) + rule `extern.convert_any`{C : context}: + `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec - rule global.get{C : context, x : idx, t : valtype}: - `%|-%CONST`(C, GLOBAL.GET_instr(x)) + rule `global.get`{C : context, x : idx, t : valtype}: + `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) @@ -26986,7 +28199,7 @@ relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) - -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t])) + -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec @@ -26996,7 +28209,7 @@ relation Type_ok: `%|-%:%`(context, type, deftype*) `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) - -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rectype, OK_oktypeidx(x)) + -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) @@ -27035,12 +28248,14 @@ relation Local_ok: `%|-%:%`(context, local, localtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) - -- Defaultable: `|-%DEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Defaultable: `|-%DEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) - -- Nondefaultable: `|-%NONDEFAULTABLE`(t) + -- Valtype_ok: `%|-%:OK`(C, t) + -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) @@ -27048,10 +28263,10 @@ relation Func_ok: `%|-%:%`(context, func, deftype) 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]) -- 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*`}))) + -- 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*`|) -- (Local_ok: `%|-%:%`(C, local, lct))*{lct <- `lct*`, local <- `local*`} - -- Expr_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS `%%`_localtype(SET_init, t_1)*{t_1 <- `t_1*`} ++ lct*{lct <- `lct*`}, LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(`%`_resulttype(t_2*{t_2 <- `t_2*`})), REFS []}, expr, `%`_resulttype(t_2*{t_2 <- `t_2*`})) + -- Expr_ok: `%|-%:%`(C +++ {TYPES [], 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*`},)) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) @@ -27106,7 +28321,7 @@ relation Start_ok: `%|-%:OK`(context, start) rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- if (x!`%`_idx.0 < |C.FUNCS_context|) - -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([]), `%`_resulttype([]))) + -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) @@ -27143,7 +28358,7 @@ relation Externidx_ok: `%|-%:%`(context, externidx, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule func{C : context, x : idx, dt : deftype}: - `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype((dt : deftype <: typeuse))) + `%|-%:%`(C, FUNC_externidx(x), FUNC_externtype(dt : deftype <: typeuse)) -- if (x!`%`_idx.0 < |C.FUNCS_context|) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) @@ -27157,52 +28372,52 @@ relation Export_ok: `%|-%:%%`(context, export, name, externtype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:136.1-136.100 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:180.1-181.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-186.54 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) - -- Globals_ok: `%|-%:%`(C +++ {TYPES [], RECS [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) + -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:135.1-135.98 +;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:172.1-173.17 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-178.49 + ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) - -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) + -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec syntax nonfuncs = - | `%%%%`{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(global*{global <- `global*`} : global*, mem*{mem <- `mem*`} : mem*, table*{table <- `table*`} : table*, elem*{elem <- `elem*`} : elem*) + | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec - def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*}(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`})) = $funcidx_module(MODULE_module([], [], [], global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, [], [], elem*{elem <- `elem*`}, ?(), [])) + def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec rule _{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, C : context, `xt_I*` : externtype*, `xt_E*` : externtype*, `dt'*` : deftype*, C' : context, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt*` : deftype*, `ok*` : datatype*, `rt*` : reftype*, `nm*` : name*, `jt_I*` : tagtype*, `mt_I*` : memtype*, `tt_I*` : tabletype*, `gt_I*` : globaltype*, `dt_I*` : deftype*, `x*` : idx*}: - `|-%:%`(MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}), $clos_moduletype(C, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`}))) - -- Types_ok: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, type*{type <- `type*`}, dt'*{dt' <- `dt'*`}) + `|-%:%`(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'*`}) -- if (|`import*`| = |`xt_I*`|) - -- (Import_ok: `%|-%:%`({TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, import, xt_I))*{import <- `import*`, xt_I <- `xt_I*`} + -- (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*`}) @@ -27221,9 +28436,9 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (|`export*`| = |`xt_E*`|) -- (Export_ok: `%|-%:%%`(C, export, nm, xt_E))*{export <- `export*`, nm <- `nm*`, xt_E <- `xt_E*`} -- if $disjoint_(syntax name, nm*{nm <- `nm*`}) - -- if (C = C' +++ {TYPES [], RECS [], TAGS jt_I*{jt_I <- `jt_I*`} ++ jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt_I*{mt_I <- `mt_I*`} ++ mt*{mt <- `mt*`}, TABLES tt_I*{tt_I <- `tt_I*`} ++ tt*{tt <- `tt*`}, FUNCS [], DATAS ok*{ok <- `ok*`}, ELEMS rt*{rt <- `rt*`}, LOCALS [], LABELS [], RETURN ?(), REFS []}) - -- if (C' = {TYPES dt'*{dt' <- `dt'*`}, RECS [], TAGS [], GLOBALS gt_I*{gt_I <- `gt_I*`}, MEMS [], TABLES [], FUNCS dt_I*{dt_I <- `dt_I*`} ++ dt*{dt <- `dt*`}, DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS x*{x <- `x*`}}) - -- if (x*{x <- `x*`} = $funcidx_nonfuncs(`%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}))) + -- if (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 (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*`})) @@ -27232,12 +28447,12 @@ relation Module_ok: `|-%:%`(module, moduletype) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed2 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec syntax relaxed4 = - | `%`{i : nat}(i : nat) + | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec @@ -27364,7 +28579,7 @@ def $sx(storagetype : storagetype) : sx? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0) + def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) @@ -27408,7 +28623,7 @@ def $sat_s_(N : N, int : int) : int ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) @@ -27429,51 +28644,51 @@ def $ictz_(N : N, iN : iN(N)) : iN(N) def $ipopcnt_(N : N, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iextend_(N : N, M : M, sx : sx, iN : iN(N)) : iN(N) +def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ M))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iextend_{N : N, M : M, i : iN(N)}(N, M, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(M, (i!`%`_iN.0 \ (2 ^ M))))) + def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N))) + def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat)) + def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N))) + def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))))) + def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0)) = ?() + def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))))) + def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -27509,16 +28724,16 @@ def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0))))) + def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0))))) + def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) @@ -27568,50 +28783,50 @@ def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0))) + def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0))) + def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2))) + def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2))) + def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0)))) + def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0)))) + def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)))) + def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)))) + def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* @@ -27692,31 +28907,31 @@ def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wrap__(M : M, N : N, iN : iN(M)) : iN(N) +def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extend__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $trunc_sat__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $relaxed_trunc__(M : M, N : N, sx : sx, fN : fN(M)) : iN(N)? +def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $demote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $promote__(M : M, N : N, fN : fN(M)) : fN(N)* +def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $convert__(M : M, N : N, sx : sx, iN : iN(M)) : fN(N) +def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $narrow__(M : M, N : N, sx : sx, iN : iN(M)) : iN(N) +def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) @@ -27758,7 +28973,7 @@ def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : nu ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $unop_{Inn : Inn, M : M, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(M)), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), M, S_sx, i)] + def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -27793,9 +29008,9 @@ def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), n ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0))] + def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec @@ -27873,12 +29088,12 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0)), `%`_u32($sizenn((Inn : Inn <: numtype))))) + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)))))) + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) @@ -27895,7 +29110,7 @@ def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0)))) + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -27906,32 +29121,32 @@ def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() + def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} + def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?(zero) + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?() + def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx)) = ?(half) + def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} + def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(zero)) = ?() + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__) = ?(LOW_half) + def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat @@ -27946,7 +29161,7 @@ def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -27955,150 +29170,136 @@ def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) + def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) + def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})] - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) + def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_3)) + def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`} - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_3)) + def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $ivtestop_(shape : shape, def $f_(N : N, iN : iN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivtestop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $fvtestop_(shape : shape, def $f_(N : N, fN : fN(N)) : u32, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvtestop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), `c*` : u32*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1) = `%`_u32($prod(c!`%`_u32.0*{c <- `c*`})) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`} = $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), `%`_dim(M)), `%`_lane_(c!`%`_iN.0)*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), v_2)) - -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) + def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) + -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) + def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1) = $irev_(32, c) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0))!`%`_u32.0)*{c_1 <- `c_1*`} ++ `%`_bit(0)^(((32 : nat <:> int) - (M : nat <:> int)) : int <:> nat){}) + def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))))*}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v_2)) + def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec @@ -28125,204 +29326,199 @@ def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fabs_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fneg_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsqrt_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fceil_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ffloor_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $ftrunc_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fnearest_, v) + def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iabs_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ineg_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ipopcnt_, v) + def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imul_, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iadd_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $isub_sat_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imin_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $imax_, sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `AVGRU`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iavgr_, U_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `Q15MULR_SATS`_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $iq15mulr_sat_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `RELAXED_Q15MULRS`_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_q15mulr_, S_sx, v_1, v_2) + def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fadd_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fsub_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmul_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fdiv_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmin_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fpmax_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_min_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_max_, v_1, v_2) + def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $irelaxed_laneselect_, v_1, v_2, v_3) + def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_madd_, v_1, v_2, v_3) + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $frelaxed_nmadd_, v_1, v_2, v_3) - -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec -def $vtestop_(shape : shape, vtestop_ : vtestop_(shape), vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vtestop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), ALL_TRUE_vtestop_, v) = $ivtestop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $inez_, v) + def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ieq_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ine_, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ilt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GT_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $igt_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), LE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ile_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), GE_vrelop_(sx), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ige_, sx, v_1, v_2) + def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $feq_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fne_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $flt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fgt_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fle_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), `%`_dim(M)), def $fge_, v_1, v_2) + def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), EXTEND_vcvtop__(half, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] + def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Inn_2 : Inn <: lanetype), `%`_dim(M_2)), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Fnn_2 : Fnn <: lanetype), `%`_dim(M_2)), `PROMOTELOW`_vcvtop__, c_1) = c*{c <- `c*`} + def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, v_1) = v - -- if (($halfop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop) = ?())) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M)), `%X%`_shape(Lnn_2, `%`_dim(M)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v + -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($halfop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(half)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)[$half(half, 0, M_2) : M_2]) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2))), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, `%`_dim(M_1))))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, v_1) = v - -- if ($zeroop(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop) = ?(ZERO_zero)) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, `%`_dim(M_1)), v_1)) - -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, `%`_dim(M_1)), `%X%`_shape(Lnn_2, `%`_dim(M_2)), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1{})) - -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, `%`_dim(M_2)), c*{c <- `c*`})*{`c*` <- `c**`}) + def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v + -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) + -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) + -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishl_, v, i) + def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), def $ishr_, sx, v, i) + def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), v) + def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $iswizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), def $irelaxed_swizzle_lane_, v_1, v_2) + def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(M))), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, `%`_dim(M)), i*{i <- `i*`}, v_1, v_2) + def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), sx, v_1, v_2) = v - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)) + def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) -- if (c'_1*{c'_1 <- `c'_1*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) - -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) + -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1), `%`_iN(j_2))*{j_1 <- `j_1*`, j_2 <- `j_2*`} + def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)) + def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivadd_pairwise_, sx, v_1) + def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* @@ -28339,9 +29535,9 @@ def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), c*{c <- `c*`}) - -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) - -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) + -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) + -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_1, c_1)*{c_1 <- `c_1*`}) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) @@ -28354,165 +29550,154 @@ def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2)), `%`_laneidx(M_2), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_, S_sx, S_sx, `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOTS`_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1)), `%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0), `%`_laneidx(M_1), v_1, v_2) + def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec - def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), `RELAXED_DOT_ADDS`_vextternop__, c_1, c_2, c_3) = c + def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - -- if (M = (2 * M_2)) - -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), `%`_dim(M_1))), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `RELAXED_DOTS`_vextbinop__, c_1, c_2)) - -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M))), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2))), EXTADD_PAIRWISE_vextunop__(S_sx), c')) - -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), `%`_dim(M_2)), ADD_vbinop_, c'', c_3)) + -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) + -- if (c' = $vextbinop__(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), RELAXED_DOTS_vextbinop__, c_1, c_2)) + -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) + -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax num = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) + | CONST(numtype : numtype, num_(numtype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax vec = - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec -syntax ref = - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) + | VCONST(vectype : vectype, vec_(vectype)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax result = - | _VALS{`val*` : val*}(val*{val <- `val*`} : val*) - | `(REF.EXN_ADDR%)THROW_REF`{exnaddr : exnaddr}(exnaddr : exnaddr) + | _VALS(val*) + | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax hostfunc = - | `...` + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funccode = - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | `...` + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | _HOSTFUNC(text) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax taginst = { - TYPE{tagtype : tagtype} tagtype + TYPE tagtype } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax globalinst = { - TYPE{globaltype : globaltype} globaltype, - VALUE{val : val} val + TYPE globaltype, + VALUE val } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax meminst = { - TYPE{memtype : memtype} memtype, - BYTES{`byte*` : byte*} byte* + TYPE memtype, + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax tableinst = { - TYPE{tabletype : tabletype} tabletype, - REFS{`ref*` : ref*} ref* + TYPE tabletype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax funcinst = { - TYPE{deftype : deftype} deftype, - MODULE{moduleinst : moduleinst} moduleinst, - CODE{funccode : funccode} funccode + TYPE deftype, + MODULE moduleinst, + CODE funccode } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax datainst = { - BYTES{`byte*` : byte*} byte* + BYTES byte* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax eleminst = { - TYPE{elemtype : elemtype} elemtype, - REFS{`ref*` : ref*} ref* + TYPE elemtype, + REFS ref* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax packval = - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax fieldval = - | CONST{numtype : numtype, num_ : num_(numtype)}(numtype : numtype, num_ : num_(numtype)) - | VCONST{vectype : vectype, vec_ : vec_(vectype)}(vectype : vectype, vec_ : vec_(vectype)) - | REF.NULL{heaptype : heaptype}(heaptype : heaptype) - | REF.I31_NUM{u31 : u31}(u31 : u31) - | REF.STRUCT_ADDR{structaddr : structaddr}(structaddr : structaddr) - | REF.ARRAY_ADDR{arrayaddr : arrayaddr}(arrayaddr : arrayaddr) - | REF.FUNC_ADDR{funcaddr : funcaddr}(funcaddr : funcaddr) - | REF.EXN_ADDR{exnaddr : exnaddr}(exnaddr : exnaddr) - | REF.HOST_ADDR{hostaddr : hostaddr}(hostaddr : hostaddr) - | REF.EXTERN{addrref : addrref}(addrref : addrref) - | PACK{packtype : packtype, iN : iN($psizenn(packtype))}(packtype : packtype, iN : iN($psizenn(packtype))) + | CONST(numtype : numtype, num_(numtype)) + | VCONST(vectype : vectype, vec_(vectype)) + | `REF.I31_NUM`(u31) + | `REF.NULL_ADDR` + | `REF.STRUCT_ADDR`(structaddr) + | `REF.ARRAY_ADDR`(arrayaddr) + | `REF.FUNC_ADDR`(funcaddr) + | `REF.EXN_ADDR`(exnaddr) + | `REF.HOST_ADDR`(hostaddr) + | `REF.EXTERN`(ref) + | PACK(packtype : packtype, iN($psizenn(packtype))) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax structinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax arrayinst = { - TYPE{deftype : deftype} deftype, - FIELDS{`fieldval*` : fieldval*} fieldval* + TYPE deftype, + FIELDS fieldval* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax exninst = { - TAG{tagaddr : tagaddr} tagaddr, - FIELDS{`val*` : val*} val* + TAG tagaddr, + FIELDS val* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax store = { - TAGS{`taginst*` : taginst*} taginst*, - GLOBALS{`globalinst*` : globalinst*} globalinst*, - MEMS{`meminst*` : meminst*} meminst*, - TABLES{`tableinst*` : tableinst*} tableinst*, - FUNCS{`funcinst*` : funcinst*} funcinst*, - DATAS{`datainst*` : datainst*} datainst*, - ELEMS{`eleminst*` : eleminst*} eleminst*, - STRUCTS{`structinst*` : structinst*} structinst*, - ARRAYS{`arrayinst*` : arrayinst*} arrayinst*, - EXNS{`exninst*` : exninst*} exninst* + TAGS taginst*, + GLOBALS globalinst*, + MEMS meminst*, + TABLES tableinst*, + FUNCS funcinst*, + DATAS datainst*, + ELEMS eleminst*, + STRUCTS structinst*, + ARRAYS arrayinst*, + EXNS exninst* } ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax state = - | `%;%`{store : store, frame : frame}(store : store, frame : frame) + | `%;%`(store : store, frame : frame) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec syntax config = - | `%;%`{state : state, `instr*` : instr*}(state : state, instr*{instr <- `instr*`} : instr*) + | `%;%`(state : state, `instr*` : instr*) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $Ki : nat @@ -28536,13 +29721,13 @@ def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:199.1-199.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28550,13 +29735,13 @@ def $tagsxa(externaddr*) : tagaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.89 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:203.1-203.26 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.51 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.63 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28564,13 +29749,13 @@ def $globalsxa(externaddr*) : globaladdr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:195.1-195.86 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:207.1-207.23 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.42 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.57 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28578,13 +29763,13 @@ def $memsxa(externaddr*) : memaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.88 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:211.1-211.25 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.48 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.61 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28592,13 +29777,13 @@ def $tablesxa(externaddr*) : tableaddr* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.87 +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:215.1-215.24 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:216.1-216.45 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:217.1-217.59 + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } @@ -28673,115 +29858,125 @@ def $exninst(state : state) : exninst* ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $fof(state : state) : frame + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $fof{z : state}(z) = $frame(z) + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $type{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $sof(state : state) : store + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $sof{z : state}(z) = $store(z) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $tag{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TAGS_store[f.MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] + def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $global{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] + def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $mem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] + def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $table{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] + def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $func{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.FUNCS_store[f.MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] + def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $data{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] + def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $elem{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = s.ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] + def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $local{s : store, f : frame, x : idx}(`%;%`_state(s, f), x) = f.LOCALS_frame[x!`%`_idx.0] + def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_local{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s, f[LOCALS_frame[x!`%`_idx.0] = ?(v)]) + def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_global{s : store, f : frame, x : idx, v : val}(`%;%`_state(s, f), x, v) = `%;%`_state(s[GLOBALS_store[f.MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], f) + def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_table{s : store, f : frame, x : idx, i : nat, r : ref}(`%;%`_state(s, f), x, i, r) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], f) + def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_tableinst{s : store, f : frame, x : idx, ti : tableinst}(`%;%`_state(s, f), x, ti) = `%;%`_state(s[TABLES_store[f.MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], f) + def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_mem{s : store, f : frame, x : idx, i : nat, j : nat, `b*` : byte*}(`%;%`_state(s, f), x, i, j, b*{b <- `b*`}) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], f) + def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_meminst{s : store, f : frame, x : idx, mi : meminst}(`%;%`_state(s, f), x, mi) = `%;%`_state(s[MEMS_store[f.MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], f) + def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_elem{s : store, f : frame, x : idx, `r*` : ref*}(`%;%`_state(s, f), x, r*{r <- `r*`}) = `%;%`_state(s[ELEMS_store[f.MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], f) + def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_data{s : store, f : frame, x : idx, `b*` : byte*}(`%;%`_state(s, f), x, b*{b <- `b*`}) = `%;%`_state(s[DATAS_store[f.MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], f) + def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_struct{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[STRUCTS_store[a].FIELDS_structinst[i] = fv], f) + def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $with_array{s : store, f : frame, a : addr, i : nat, fv : fieldval}(`%;%`_state(s, f), a, i, fv) = `%;%`_state(s[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], f) + def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_structinst{s : store, f : frame, `si*` : structinst*}(`%;%`_state(s, f), si*{si <- `si*`}) = `%;%`_state(s[STRUCTS_store =++ si*{si <- `si*`}], f) + def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_arrayinst{s : store, f : frame, `ai*` : arrayinst*}(`%;%`_state(s, f), ai*{ai <- `ai*`}) = `%;%`_state(s[ARRAYS_store =++ ai*{ai <- `ai*`}], f) + def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec - def $add_exninst{s : store, f : frame, `exn*` : exninst*}(`%;%`_state(s, f), exn*{exn <- `exn*`}) = `%;%`_state(s[EXNS_store =++ exn*{exn <- `exn*`}], f) + def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? @@ -28791,6 +29986,7 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) -- if (i'!`%`_u64.0 = (|r'*{r' <- `r'*`}| + n)) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec @@ -28798,11 +29994,29 @@ def $growmem(meminst : meminst, nat : nat) : meminst? ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = ?(meminst') -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) - -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0)^(n * (64 * $Ki)){}}) + -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) -- if ((i'!`%`_u64.0 : nat <:> rat) = (((|b*{b <- `b*`}| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) + (n : nat <:> rat))) -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} + -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +syntax hostcallresult = + | RES(store : store, result : result) + | BOT + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* + +;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +def $lift_result(result : result) : instr* + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] + ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + def $lift_result(TRAP_result) = [TRAP_instr] + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -28820,53 +30034,54 @@ rec { ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-37.35 - rule null{s : store, ht : heaptype, ht' : heaptype}: - `%|-%:%`(s, REF.NULL_ref(ht), REF_reftype(?(NULL_null), ht')) - -- Heaptype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, ht', ht) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + rule null{s : store}: + `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:39.1-40.33 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: - `%|-%:%`(s, REF.I31_NUM_ref(i), REF_reftype(?(), I31_heaptype)) + `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:42.1-44.31 + ;; ../../../../specification/wasm-3.0/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(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:46.1-48.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:50.1-52.29 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:54.1-56.24 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: - `%|-%:%`(s, REF.EXN_ADDR_ref(a), REF_reftype(?(), EXN_heaptype)) + `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:58.1-59.35 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: - `%|-%:%`(s, REF.HOST_ADDR_ref(a), REF_reftype(?(), ANY_heaptype)) + `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:61.1-63.38 - rule extern{s : store, addrref : addrref}: - `%|-%:%`(s, REF.EXTERN_ref(addrref), REF_reftype(?(), EXTERN_heaptype)) - -- Ref_ok: `%|-%:%`(s, (addrref : addrref <: ref), REF_reftype(?(), ANY_heaptype)) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + rule extern{s : store, ref : ref}: + `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) + -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) + -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-68.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec @@ -28886,77 +30101,91 @@ relation Val_ok: `%|-%:%`(store, val, valtype) `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Packval_ok: `%|-%:%`(store, packval, packtype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: + `%|-%:%`(s, PACK_packval(pt, c), pt) + +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule val{s : store, val : val, t : valtype}: + `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + rule packval{s : store, packval : packval, pt : packtype}: + `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) + -- Packval_ok: `%|-%:%`(s, packval, pt) + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:86.1-86.84 +;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:88.1-90.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:92.1-94.34 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:96.1-98.28 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:100.1-102.32 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-106.30 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec: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(funcinst.TYPE_funcinst : deftype <: typeuse)) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:108.1-111.37 + ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') - -- Externtype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, xt', xt) + -- Externtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt) + -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_valtype{moduleinst : moduleinst, t : valtype, `dt*` : deftype*}(moduleinst, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_reftype{moduleinst : moduleinst, rt : reftype, `dt*` : deftype*}(moduleinst, rt) = $subst_all_reftype(rt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_globaltype{moduleinst : moduleinst, gt : globaltype, `dt*` : deftype*}(moduleinst, gt) = $subst_all_globaltype(gt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_memtype{moduleinst : moduleinst, mt : memtype, `dt*` : deftype*}(moduleinst, mt) = $subst_all_memtype(mt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec - def $inst_tabletype{moduleinst : moduleinst, tt : tabletype, `dt*` : deftype*}(moduleinst, tt) = $subst_all_tabletype(tt, (dt : deftype <: typeuse)*{dt <- `dt*`}) - -- if (dt*{dt <- `dt*`} = moduleinst.TYPES_moduleinst) + def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) @@ -29003,7 +30232,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: - `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))]) + `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec @@ -29031,9 +30260,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: @@ -29041,9 +30270,9 @@ relation Step_pure: `%~>%`(instr*, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_non_null-null`{val : val, l : labelidx, ht : heaptype}: + rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) - -- if (val = REF.NULL_val(ht)) + -- if (val = `REF.NULL_ADDR`_val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: @@ -29052,11 +30281,11 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call_indirect{x : idx, yy : typeuse}: - `%~>%`([CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) + `%~>%`([CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call_indirect{x : idx, yy : typeuse}: - `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [TABLE.GET_instr(x) REF.CAST_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) + `%~>%`([RETURN_CALL_INDIRECT_instr(x, yy)], [`TABLE.GET`_instr(x) `REF.CAST`_instr(REF_reftype(?(NULL_null), (yy : typeuse <: heaptype))) RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: @@ -29087,81 +30316,87 @@ relation Step_pure: `%~>%`(instr*, instr*) rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `trap-handler`{n : n, `catch*` : catch*}: + `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.tee{val : val, x : idx}: - `%~>%`([(val : val <: instr) LOCAL.TEE_instr(x)], [(val : val <: instr) (val : val <: instr) LOCAL.SET_instr(x)]) + rule `local.tee`{val : val, x : idx}: + `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.i31{i : num_(I32_numtype)}: - `%~>%`([CONST_instr(I32_numtype, i) REF.I31_instr], [REF.I31_NUM_instr($wrap__(32, 31, i))]) + rule `ref.i31`{i : num_(I32_numtype)}: + `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.is_null-true`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.is_null-true`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.IS_NULL_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.as_non_null-null`{ref : ref, ht : heaptype}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [TRAP_instr]) - -- if (ref = REF.NULL_ref(ht)) + rule `ref.as_non_null-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: - `%~>%`([(ref : ref <: instr) REF.AS_NON_NULL_instr], [(ref : ref <: instr)]) + `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.eq-null`{ref_1 : ref, ref_2 : ref, ht_1 : heaptype, ht_2 : heaptype}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) - -- if ((ref_1 = REF.NULL_ref(ht_1)) /\ (ref_2 = REF.NULL_ref(ht_2))) + rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(1))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: - `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) REF.EQ_instr], [CONST_instr(I32_numtype, `%`_num_(0))]) + `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `i31.get-null`{ht : heaptype, sx : sx}: - `%~>%`([REF.NULL_instr(ht) I31.GET_instr(sx)], [TRAP_instr]) + rule `i31.get-null`{sx : sx}: + `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: - `%~>%`([REF.I31_NUM_instr(i) I31.GET_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) + `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new{val : val, n : n, x : idx}: - `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_instr(x)], (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) + rule `array.new`{val : val, n : n, x : idx}: + `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) EXTERN.CONVERT_ANY_instr], [REF.NULL_instr(EXTERN_heaptype)]) + rule `extern.convert_any-null`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) + -- if (ref = `REF.NULL_ADDR`_ref) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `extern.convert_any-addr`{addrref : addrref}: - `%~>%`([(addrref : addrref <: instr) EXTERN.CONVERT_ANY_instr], [REF.EXTERN_instr(addrref)]) + rule `extern.convert_any-addr`{ref : ref}: + `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) + -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-null`{ht : heaptype}: - `%~>%`([REF.NULL_instr(ht) ANY.CONVERT_EXTERN_instr], [REF.NULL_instr(ANY_heaptype)]) + rule `any.convert_extern-null`: + `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `any.convert_extern-addr`{addrref : addrref}: - `%~>%`([REF.EXTERN_instr(addrref) ANY.CONVERT_EXTERN_instr], [(addrref : addrref <: instr)]) + rule `any.convert_extern-addr`{ref : ref}: + `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: @@ -29239,7 +30474,7 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) - -- if (c = $ine_($vsize(V128_vectype), c_1, `%`_iN(0))) + -- if (c = $inez_($vsize(V128_vectype), c_1)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: @@ -29275,9 +30510,10 @@ relation Step_pure: `%~>%`(instr*, instr*) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule vtestop{c_1 : vec_(V128_Vnn), sh : shape, vtestop : vtestop_(sh), i : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(sh, vtestop)], [CONST_instr(I32_numtype, i)]) - -- if (i = $vtestop_(sh, vtestop, c_1)) + rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: + `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) + -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) + -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: @@ -29306,25 +30542,25 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: - `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, `%`_dim(M)))], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lpacknum_(Lnn, c_1)^M{})) + `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), ?(), i)], [CONST_instr(nt, c_2)]) - -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0]) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) + -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)|) + -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) - -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)|) - -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), `%`_dim(M)), c_1)[i!`%`_laneidx.0])) + `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) + -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)|) + -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: - `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, `%`_dim(M)), i)], [VCONST_instr(V128_vectype, c)]) - -- if (c = $inv_lanes_(`%X%`_shape(Lnn, `%`_dim(M)), $lanes_(`%X%`_shape(Lnn, `%`_dim(M)), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) + `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) + -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: @@ -29354,28 +30590,27 @@ relation Step_pure: `%~>%`(instr*, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`})) - -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) + def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) + -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype(lift(t?{t <- `t?`}))) + def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule block{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule loop{z : state, `val*` : val*, m : m, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, n : n}: + rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -29383,10 +30618,9 @@ relation Step_read: `%~>%`(config, instr*) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype, rt : reftype}: + rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt) - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt, $inst_reftype(f.MODULE_frame, rt_2)) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: @@ -29395,27 +30629,14 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if (a < |$funcinst(z)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-null`{z : state, ht : heaptype, yy : typeuse}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CALL_REF_instr(yy)]), [TRAP_instr]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `call_ref-func`{z : state, `val*` : val*, n : n, a : addr, yy : typeuse, m : m, f : frame, `instr*` : instr*, fi : funcinst, `t_1*` : valtype*, `t_2*` : valtype*, x : idx, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]), [`FRAME_%{%}%`_instr(m, f, [`LABEL_%{%}%`_instr(m, [], instr*{instr <- `instr*`})])]) - -- if (a < |$funcinst(z)|) - -- if ($funcinst(z)[a] = fi) - -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) - -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) - -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: - `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [REF.FUNC_ADDR_instr(a) RETURN_CALL_REF_instr(($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse))]) + `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if (a < |$funcinst(z)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) @@ -29429,39 +30650,39 @@ relation Step_read: `%~>%`(config, instr*) `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, ht : heaptype, yy : typeuse, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [REF.NULL_instr(ht)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) + rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, `val*` : val*, n : n, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, m : m}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [REF.FUNC_ADDR_instr(a) CALL_REF_instr(yy)]) + rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) - -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`}), `%`_resulttype(t_2^m{t_2 <- `t_2*`}))) + -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `throw_ref-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) THROW_REF_instr]), [TRAP_instr]) + rule `throw_ref-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: - `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) THROW_REF_instr]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if (a < |$exninst(z)|) -- if (x!`%`_idx.0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) @@ -29469,7 +30690,7 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if (a < |$exninst(z)|) -- if (x!`%`_idx.0 < |$tagaddr(z)|) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) @@ -29477,915 +30698,1818 @@ relation Step_read: `%~>%`(config, instr*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [REF.EXN_ADDR_instr(a) BR_instr(l)]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: - `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [REF.EXN_ADDR_instr(a) THROW_REF_instr])]) + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule try_table{z : state, `val*` : val*, m : m, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`}), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) - -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`}), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`}))) + rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) + -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule local.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [LOCAL.GET_instr(x)]), [(val : val <: instr)]) + rule `local.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule global.get{z : state, x : idx, val : val}: - `%~>%`(`%;%`_config(z, [GLOBAL.GET_instr(x)]), [(val : val <: instr)]) + rule `global.get`{z : state, x : idx, val : val}: + `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) TABLE.GET_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule table.size{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: - `%~>%`(`%;%`_config(z, [TABLE.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: + `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) TABLE.COPY_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.GET_instr(y) TABLE.SET_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.COPY_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) TABLE.SET_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) TABLE.INIT_instr(x, y)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) - -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) - -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) + -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((M * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), M : M, K : K, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(M)*, `k*` : nat*, Jnn : Jnn}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(M), K, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- (if ($ibytes_(M, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((((k * M) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((M : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), `%`_lane_(j!`%`_iN.0)^M{})) + -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N))), x, ao)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) - -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) + -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) - -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0)])) + -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) + -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule memory.size{z : state, x : idx, at : addrtype, n : n, lim : limits}: - `%~>%`(`%;%`_config(z, [MEMORY.SIZE_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n))]) + rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: + `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), []) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.FILL_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.FILL_instr(x)]) + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [TRAP_instr]) + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), []) + rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) + -- otherwise + -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) + -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) + -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.null`{z : state, ht : heaptype}: + `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.func`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) + -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) + -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- if (|`val*`| = |`zt*`|) + -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-null`{z : state, `sx?` : sx?, x : idx, i : fieldidx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: + `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) + -- if (i!`%`_fieldidx.0 < |zt*{zt <- `zt*`}|) + -- if (i!`%`_fieldidx.0 < |$structinst(z)[a].FIELDS_structinst|) + -- if (a < |$structinst(z)|) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($default_($unpack(zt)) = ?(val)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) + -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) + -- (if ($cunpack(zt) =/= ?()))^n{} + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + -- if (a < |$arrayinst(z)|) + -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) + -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) + -- if (a < |$arrayinst(z)|) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-null`{z : state}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.len-array`{z : state, a : addr}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) + -- if (a < |$arrayinst(z)|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) + -- if (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) + -- otherwise + -- if (n = 0) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) + -- otherwise + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (a_1 < |$arrayinst(z)|) + -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) + -- if (a_2 < |$arrayinst(z)|) + -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise - -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n)) MEMORY.COPY_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.COPY_instr(x_1, x_2)]) + rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise + -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) + -- if (sx?{sx <- `sx?`} = $sx(zt_2)) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [TRAP_instr]) - -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) + rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), []) + rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) + -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) MEMORY.INIT_instr(x, y)]) - -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) + rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise + -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) + -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.null-idx`{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(_IDX_heaptype(x))]), [REF.NULL_instr(($type(z, x) : deftype <: heaptype))]) + rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule ref.func{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [REF.FUNC_instr(x)]), [REF.FUNC_ADDR_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) - -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) + rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- if (a < |$arrayinst(z)|) + -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1))]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) + rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.TEST_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0))]) + rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise + -- if (n = 0) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype, rt' : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [(ref : ref <: instr)]) - -- Ref_ok: `%|-%:%`(s, ref, rt') - -- Reftype_sub: `%|-%<:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS []}, rt', $inst_reftype(f.MODULE_frame, rt)) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) REF.CAST_instr(rt)]), [TRAP_instr]) + rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) + -- if ($cunpack(zt) =/= ?()) -- otherwise + -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule struct.new_default{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, [STRUCT.NEW_DEFAULT_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [STRUCT.NEW_instr(x)]) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (|`val*`| = |`zt*`|) - -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-null`{z : state, ht : heaptype, `sx?` : sx?, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +relation Step: `%~>%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) STRUCT.GET_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_u32.0]) : val <: instr)]) - -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) - -- if (i!`%`_u32.0 < |$structinst(z)[a].FIELDS_structinst|) - -- if (a < |$structinst(z)|) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) + -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule array.new_default{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DEFAULT_instr(x)]), (val : val <: instr)^n{} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($default_($unpack(zt)) = ?(val)) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), [TRAP_instr]) - -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_ELEM_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: + `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), [TRAP_instr]) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: + `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) + -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.NEW_DATA_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]) - -- (if ($cunpack(zt) =/= ?()))^n{c <- `c*`} + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.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)|) + -- if ($funcinst(z)[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = FUNC_funccode(x, LOCAL_local(t)*{t <- `t*`}, instr*{instr <- `instr*`})) + -- if (f = {LOCALS ?(val)^n{val <- `val*`} ++ $default_(t)*{t <- `t*`}, MODULE fi.MODULE_funcinst}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:184.1-190.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))|) + -- if ($funcinst(`%;%`_state(s, f))[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- 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-3.0/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) + -- if (a < |$funcinst(`%;%`_state(s, f))|) + -- if ($funcinst(`%;%`_state(s, f))[a] = fi) + -- Expand: `%~~%`(fi.TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) + -- if (fi.CODE_funcinst = _HOSTFUNC_funccode(hf)) + -- 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-3.0/4.3-execution.instructions.spectec:242.1-246.49 + rule throw{z : state, n : n, `val*` : val*, x : idx, exn : exninst, a : addr, `t*` : valtype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])) + -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`},), `%`_resulttype([],))) + -- if (a = |$exninst(z)|) + -- if (x!`%`_idx.0 < |$tagaddr(z)|) + -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:320.1-321.56 + rule `local.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + rule `global.set`{z : state, val : val, x : idx}: + `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) + -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) + -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.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-3.0/4.3-execution.instructions.spectec:367.1-368.87 + rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + rule `elem.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $nbytes_(nt, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) + -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) + -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.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 (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-3.0/4.3-execution.instructions.spectec:564.1-567.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-3.0/4.3-execution.instructions.spectec:569.1-570.84 + rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: + `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + rule `data.drop`{z : state, x : idx}: + `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) + -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- if (a = |$structinst(z)|) + -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) + + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.65 + rule `array.new_fixed`{z : state, n : n, `val*` : val*, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: + `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]), `%;%`_config($add_arrayinst(z, [ai]), [`REF.ARRAY_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) + -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.get-null`{z : state, ht : heaptype, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec - rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:795.1-797.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-3.0/4.3-execution.instructions.spectec - rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) ARRAY.GET_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) - -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) - -- if (a < |$arrayinst(z)|) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 + rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: + `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-null`{z : state, ht : heaptype}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) ARRAY.LEN_instr]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.len-array`{z : state, a : addr}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) ARRAY.LEN_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|))]) - -- if (a < |$arrayinst(z)|) +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +relation Steps: `%~>*%`(config, config) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + rule refl{z : state, `instr*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) + ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: + `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) + -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) + -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +} +;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [TRAP_instr]) - -- if (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) + rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: + `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) + -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.FILL_instr(x)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.FILL_instr(x)]) - -- otherwise +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +def $alloctypes(type*) : deftype* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + def $alloctypes([]) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} + -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) + -- if (type = TYPE_type(rectype)) + -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) + -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) + -- if (taginst = {TYPE tagtype}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +def $alloctags(store : store, tagtype*) : (store, tagaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + def $alloctags{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) + -- if ((s_1, ja) = $alloctag(s, tagtype)) + -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) + -- if (globalinst = {TYPE globaltype, VALUE val}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + def $allocglobals{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) + -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) + -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) +} + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmem(store : store, memtype : memtype) : (store, memaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) + -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null1`{z : state, ht_1 : heaptype, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht_1) CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +def $allocmems(store : store, memtype*) : (store, memaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + def $allocmems{s : store}(s, []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) + -- if ((s_1, ma) = $allocmem(s, memtype)) + -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), ht_2 : heaptype, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) REF.NULL_instr(ht_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) + -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- if (a_1 < |$arrayinst(z)|) - -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [TRAP_instr]) - -- if (a_2 < |$arrayinst(z)|) - -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + def $alloctables{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) + -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) + -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) + -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) - -- otherwise - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.COPY_instr(x_1, x_2)]), [REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.GET_instr(sx?{sx <- `sx?`}, x_2) ARRAY.SET_instr(x_1) REF.ARRAY_ADDR_instr(a_1) CONST_instr(I32_numtype, i_1) REF.ARRAY_ADDR_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.COPY_instr(x_1, x_2)]) - -- otherwise - -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) - -- if (sx?{sx <- `sx?`} = $sx(zt_2)) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + def $allocfuncs{s : store}(s, [], [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) + -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) + -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) + -- if (datainst = {BYTES byte*{byte <- `byte*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- if (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [TRAP_instr]) - -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + def $allocdatas{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) + -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) + -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) + -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_ELEM_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_ELEM_instr(x, y)]) - -- otherwise - -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) - -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-null`{z : state, ht : heaptype, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + def $allocelems{s : store}(s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) + -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) + -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- if (a < |$arrayinst(z)|) - -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexport(moduleinst : moduleinst, export : export) : exportinst + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [TRAP_instr]) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocexports(moduleinst : moduleinst, export*) : exportinst* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), []) - -- otherwise - -- if (n = 0) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) + -- if (module = MODULE_module(`%`_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*`},))) + -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) + -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) + -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) + -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) + -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) + -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) + -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) + -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) + -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) + -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) + -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}) + -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) + -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) + -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) + -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) + -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) + -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) + -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) + -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n)) ARRAY.INIT_DATA_instr(x, y)]), [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) ARRAY.SET_instr(x) REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1))) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)))) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) ARRAY.INIT_DATA_instr(x, y)]) - -- if ($cunpack(zt) =/= ?()) - -- otherwise - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $rundata_(dataidx : dataidx, data : data) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $runelem_(elemidx : elemidx, elem : elem) : instr* + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] + +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 -relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 - rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +def $evalexprs(state : state, expr*) : (state, ref*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + def $evalexprs{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) + -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 - rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) - -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 - rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +def $evalexprss(state : state, expr**) : (state, ref**) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + def $evalexprss{z : state}(z, []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) + -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) + -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 - rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: - `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.45 - rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: - `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) - -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +def $evalglobals(state : state, globaltype*, expr*) : (state, val*) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + def $evalglobals{z : state}(z, [], []) = (z, []) + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) + -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) + -- if (z' = `%;%`_state(s, f)) + -- if ((s', a) = $allocglobal(s, gt, val)) + -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:227.1-231.49 - rule throw{z : state, `val*` : val*, n : n, x : idx, exn : exninst, a : addr, `t*` : valtype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [THROW_instr(x)]), `%;%`_config($add_exninst(z, [exn]), [REF.EXN_ADDR_instr(a) THROW_REF_instr])) - -- Expand: `%~~%`($as_deftype($tag(z, x).TYPE_taginst), `FUNC%->%`_comptype(`%`_resulttype(t^n{t <- `t*`}), `%`_resulttype([]))) - -- if (a = |$exninst(z)|) - -- if (x!`%`_idx.0 < |$tagaddr(z)|) - -- if (exn = {TAG $tagaddr(z)[x!`%`_idx.0], FIELDS val^n{val <- `val*`}}) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $instantiate(store : store, module : module, externaddr*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) + -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) + -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} + -- if (module = MODULE_module(`%`_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*`},))) + -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) + -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) + -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) + -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) + -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) + -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){}, DATAS [], ELEMS [], EXPORTS []}) + -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) + -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) + -- if ((z'', ref_T*{ref_T <- `ref_T*`}) = $evalexprs(z', expr_T*{expr_T <- `expr_T*`})) + -- if ((z''', ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = $evalexprss(z'', expr_E*{expr_E <- `expr_E*`}*{`expr_E*` <- `expr_E**`})) + -- if (z''' = `%;%`_state(s''', f)) + -- if ((s'''', moduleinst) = $allocmodule(s''', module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) + -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D,), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){})) + -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) + -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:302.1-303.56 - rule local.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) LOCAL.SET_instr(x)]), `%;%`_config($with_local(z, x, val), [])) +;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +def $invoke(store : store, funcaddr : funcaddr, val*) : config + ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) + -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:315.1-316.58 - rule global.set{z : state, val : val, x : idx}: - `%~>%`(`%;%`_config(z, [(val : val <: instr) GLOBAL.SET_instr(x)]), `%;%`_config($with_global(z, x, val), [])) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax castop = (null?, null?) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:329.1-331.33 - rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-335.32 - rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) TABLE.SET_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) - -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax startopt = start* - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:344.1-347.46 - rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|))])) - -- if ($growtable($table(z, x), n, ref) =/= ?()) - -- if (ti = !($growtable($table(z, x), n, ref))) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:349.1-350.87 - rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n)) TABLE.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) +;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +syntax nopt = u32* - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:410.1-411.51 - rule elem.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [ELEM.DROP_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:494.1-497.60 - rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax idctxt = +{ + TYPES name?*, + TAGS name?*, + GLOBALS name?*, + MEMS name?*, + TABLES name?*, + FUNCS name?*, + DATAS name?*, + ELEMS name?*, + LOCALS name?*, + LABELS name?*, + FIELDS name?**, + TYPEDEFS deftype?* +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:499.1-503.29 - rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $nbytes_(nt, c)) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +syntax I = idctxt - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:505.1-508.52 - rule `store-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:510.1-514.52 - rule `store-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, c : num_((Inn : Inn <: numtype)), n : n, x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr((Inn : Inn <: numtype), c) STORE_instr((Inn : Inn <: numtype), ?(`%`_storeop_(`%`_sz(n))), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $ibytes_(n, $wrap__($size((Inn : Inn <: numtype)), n, c))) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +def $concat_idctxt(idctxt*) : idctxt + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:516.1-519.63 - rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +relation Idctxt_ok: `|-%:OK`(idctxt,) + ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + rule _{I : I, `field**` : char**}: + `|-%:OK`(I,) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) + -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) + -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} + -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:521.1-524.31 - rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $dots : () - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:527.1-530.50 - rule `vstore_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config(z, [TRAP_instr])) - -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0) + N) > |$mem(z, x).BYTES_meminst|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +syntax decl = + | TYPE(rectype) + | IMPORT(name : name, name : name, externtype : externtype) + | TAG(tagtype) + | GLOBAL(globaltype : globaltype, expr : expr) + | MEMORY(memtype) + | TABLE(tabletype : tabletype, expr : expr) + | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) + | DATA(`byte*` : byte*, datamode : datamode) + | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) + | START(funcidx) + | EXPORT(name : name, externidx : externidx) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:532.1-537.49 - rule `vstore_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, `b*` : byte*, Jnn : Jnn, M : M}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_LANE_instr(V128_vectype, `%`_sz(N), x, ao, j)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u32.0), (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) - -- if (N = $jsize(Jnn)) - -- if ((M : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) - -- if (j!`%`_laneidx.0 < |$lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)|) - -- if (b*{b <- `b*`} = $ibytes_(N, `%`_iN($lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), `%`_dim(M)), c)[j!`%`_laneidx.0]!`%`_lane_.0))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +def $typesd(decl*) : type* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + def $typesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:546.1-549.37 - rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat)))])) - -- if ($growmem($mem(z, x), n) =/= ?()) - -- if (mi = !($growmem($mem(z, x), n))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:551.1-552.84 - rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: - `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n)) MEMORY.GROW_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int))))])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +def $importsd(decl*) : import* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + def $importsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:612.1-613.51 - rule data.drop{z : state, x : idx}: - `%~>%`(`%;%`_config(z, [DATA.DROP_instr(x)]), `%;%`_config($with_data(z, x, []), [])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:693.1-697.65 - rule struct.new{z : state, `val*` : val*, n : n, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [STRUCT.NEW_instr(x)]), `%;%`_config($add_structinst(z, [si]), [REF.STRUCT_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`}))) - -- if (a = |$structinst(z)|) - -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +def $tagsd(decl*) : tag* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + def $tagsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:714.1-715.53 - rule `struct.set-null`{z : state, ht : heaptype, val : val, x : idx, i : u32}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config(z, [TRAP_instr])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:717.1-720.46 - rule `struct.set-struct`{z : state, a : addr, val : val, x : idx, i : u32, `zt*` : storagetype*, `mut?*` : mut?*}: - `%~>%`(`%;%`_config(z, [REF.STRUCT_ADDR_instr(a) (val : val <: instr) STRUCT.SET_instr(x, i)]), `%;%`_config($with_struct(z, a, i!`%`_u32.0, $packfield_(zt*{zt <- `zt*`}[i!`%`_u32.0], val)), [])) - -- if (i!`%`_u32.0 < |zt*{zt <- `zt*`}|) - -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`}))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +def $globalsd(decl*) : global* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + def $globalsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:733.1-738.65 - rule array.new_fixed{z : state, `val*` : val*, n : n, x : idx, ai : arrayinst, a : addr, `mut?` : mut?, zt : storagetype}: - `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [ARRAY.NEW_FIXED_instr(x, `%`_u32(n))]), `%;%`_config($add_arrayinst(z, [ai]), [REF.ARRAY_ADDR_instr(a)])) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - -- if ((a = |$arrayinst(z)|) /\ (ai = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`}})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:778.1-779.64 - rule `array.set-null`{z : state, ht : heaptype, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.NULL_instr(ht) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +def $memsd(decl*) : mem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + def $memsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:781.1-783.39 - rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config(z, [TRAP_instr])) - -- if (a < |$arrayinst(z)|) - -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:785.1-788.44 - rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: - `%~>%`(`%;%`_config(z, [REF.ARRAY_ADDR_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) ARRAY.SET_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) - -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +def $tablesd(decl*) : table* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + def $tablesd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 -relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 - rule refl{z : state, `instr*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 - rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: - `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) - -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +def $funcsd(decl*) : func* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + def $funcsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec -relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: - `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) - -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 -def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 - def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 - def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} - -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) - -- if (type = TYPE_type(rectype)) - -- if (deftype*{deftype <- `deftype*`} = $subst_all_deftypes($rolldt(x, rectype), (deftype' : deftype <: typeuse)*{deftype' <- `deftype'*`})) - -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +def $datasd(decl*) : data* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + def $datasd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) - -- if (taginst = {TYPE tagtype}) - -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 -def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 - def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 - def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) - -- if ((s_1, ja) = $alloctag(s, tagtype)) - -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +def $elemsd(decl*) : elem* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + def $elemsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) - -- if (globalinst = {TYPE globaltype, VALUE val}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +def $startsd(decl*) : start* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + def $startsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) + -- otherwise +} + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 -def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 - def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 - def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) - -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) - -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +def $exportsd(decl*) : export* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + def $exportsd([]) = [] + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) + -- otherwise } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) - -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0)^(i!`%`_u64.0 * (64 * $Ki)){}}) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +def $ordered(decl*) : bool + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true + -- if ($importsd(decl*{decl <- `decl*`}) = []) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +relation Context_ok: `|-%:OK`(context,) + ;; ../../../../specification/wasm-3.0/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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), 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([(rt : reftype <: valtype)],)))*{rt <- `rt*`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Localval_ok: `%|-%:%`(store, val?, localtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule set{s : store, val : val, t : valtype}: + `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) + -- Val_ok: `%|-%:%`(s, val, t) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule unset{s : store, t : valtype}: + `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) + -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Datainst_ok: `%|-%:%`(store, datainst, datatype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `b*` : byte*}: + `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) + -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exportinst_ok: `%|-%:OK`(store, exportinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, nm : name, xa : externaddr, xt : externtype}: + `%|-%:OK`(s, {NAME nm, ADDR xa}) + -- Externaddr_ok: `%|-%:%`(s, xa, xt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) + ;; ../../../../specification/wasm-3.0/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 0) + -- (if (exportinst.ADDR_exportinst <- TAG_externaddr(tagaddr)*{tagaddr <- `tagaddr*`} ++ GLOBAL_externaddr(globaladdr)*{globaladdr <- `globaladdr*`} ++ MEM_externaddr(memaddr)*{memaddr <- `memaddr*`} ++ TABLE_externaddr(tableaddr)*{tableaddr <- `tableaddr*`} ++ FUNC_externaddr(funcaddr)*{funcaddr <- `funcaddr*`}))*{exportinst <- `exportinst*`} + -- if (k <= |funcaddr*{funcaddr <- `funcaddr*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Frame_ok: `%|-%:%`(store, frame, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `val?*` : val?*, moduleinst : moduleinst, C : context, `lct*` : localtype*}: + `%|-%:%`(s, {LOCALS val?{val <- `val?`}*{`val?` <- `val?*`}, MODULE moduleinst}, C +++ {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS lct*{lct <- `lct*`}, LABELS [], RETURN ?(), REFS [], RECS []}) + -- Moduleinst_ok: `%|-%:%`(s, moduleinst, C) + -- if (|`lct*`| = |`val?*`|) + -- (Localval_ok: `%|-%:%`(s, val?{val <- `val?`}, lct))*{lct <- `lct*`, `val?` <- `val?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 -def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 - def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 - def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) - -- if ((s_1, ma) = $allocmem(s, memtype)) - -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) -} +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:3.1-4.36 +relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:10.1-12.46 + rule plain{s : store, C : context, instr : instr, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/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*`},))) + -- 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*`},))) + -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},), `%`_resulttype(t'_2*{t'_2 <- `t'_2*`},)) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`},), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + rule ref{s : store, C : context, ref : ref, rt : reftype}: + `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) + -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) - -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: + `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) + -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: + `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) + -- Frame_ok: `%|-%:%`(s, f, C') + -- if (C'.RETURN_context = ?(`%`_resulttype(t^n{t <- `t*`},))) + -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) + -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: + `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) + -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: + `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + rule empty{s : store, C : context}: + `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + rule seq{s : store, 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*}: + `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) + -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- if (|`init*`| = |`t*`|) + -- if (|`init*`| = |`x_1*`|) + -- (if (x_1!`%`_idx.0 < |C.LOCALS_context|))*{x_1 <- `x_1*`} + -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} + -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) + -- Instrtype_sub: `%|-%<:%`(C, it, it') + -- Instrtype_ok: `%|-%:OK`(C, it') + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: + `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: + `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) + -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) +} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, jt : tagtype}: + `%|-%:%`(s, {TYPE jt}, jt) + -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `mut?` : mut?, t : valtype, val : val}: + `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) + -- Val_ok: `%|-%:%`(s, val, t) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Meminst_ok: `%|-%:%`(store, meminst, memtype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: + `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) + -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: + `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) + -- if (|ref*{ref <- `ref*`}| = n) + -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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') + -- Deftype_sub: `%|-%<:%`(C, dt', dt) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Structinst_ok: `%|-%:OK`(store, structinst) + ;; ../../../../specification/wasm-3.0/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*`},))) + -- if (|`fv*`| = |`zt*`|) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) + ;; ../../../../specification/wasm-3.0/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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Exninst_ok: `%|-%:OK`(store, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: + `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) + -- if (ta < |s.TAGS_store|) + -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) + -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) + -- if (|`t*`| = |`val*`|) + -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 -def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 - def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 - def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) - -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) - -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + rule `ref.struct`{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|) + -- Expand: `%~~%`(s.STRUCTS_store[a].TYPE_structinst, STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},))) + -- if (i < |ft*{ft <- `ft*`}|) + -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) + + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + rule `ref.extern`{ref : ref, s : store}: + `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) - -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false + -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true + -- otherwise -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: + `~%>>_%%`(fv_1, s, fv_2) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Store_ok: `|-%:OK`(store,) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: + `|-%:OK`(s,) + -- if (|`taginst*`| = |`tagtype*`|) + -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} + -- if (|`globalinst*`| = |`globaltype*`|) + -- (Globalinst_ok: `%|-%:%`(s, globalinst, globaltype))*{globalinst <- `globalinst*`, globaltype <- `globaltype*`} + -- if (|`meminst*`| = |`memtype*`|) + -- (Meminst_ok: `%|-%:%`(s, meminst, memtype))*{meminst <- `meminst*`, memtype <- `memtype*`} + -- if (|`tableinst*`| = |`tabletype*`|) + -- (Tableinst_ok: `%|-%:%`(s, tableinst, tabletype))*{tableinst <- `tableinst*`, tabletype <- `tabletype*`} + -- if (|`deftype*`| = |`funcinst*`|) + -- (Funcinst_ok: `%|-%:%`(s, funcinst, deftype))*{deftype <- `deftype*`, funcinst <- `funcinst*`} + -- if (|`datainst*`| = |`datatype*`|) + -- (Datainst_ok: `%|-%:%`(s, datainst, datatype))*{datainst <- `datainst*`, datatype <- `datatype*`} + -- if (|`eleminst*`| = |`elemtype*`|) + -- (Eleminst_ok: `%|-%:%`(s, eleminst, elemtype))*{eleminst <- `eleminst*`, elemtype <- `elemtype*`} + -- (Structinst_ok: `%|-%:OK`(s, structinst))*{structinst <- `structinst*`} + -- (Arrayinst_ok: `%|-%:OK`(s, arrayinst))*{arrayinst <- `arrayinst*`} + -- (Exninst_ok: `%|-%:OK`(s, exninst))*{exninst <- `exninst*`} + -- (NotImmutReachable: `~%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, `REF.STRUCT_ADDR`_fieldval(a)))^(a<|structinst*{structinst <- `structinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.ARRAY_ADDR`_fieldval(a), s, `REF.ARRAY_ADDR`_fieldval(a)))^(a<|arrayinst*{arrayinst <- `arrayinst*`}|){} + -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} + -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_taginst: `%<=%`(taginst, taginst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{jt : tagtype}: + `%<=%`({TYPE jt}, {TYPE jt}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_globalinst: `%<=%`(globalinst, globalinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: + `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) + -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_meminst: `%<=%`(meminst, meminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: + `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) + -- if (n <= n') + -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_tableinst: `%<=%`(tableinst, tableinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: + `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) + -- if (n <= n') + -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_funcinst: `%<=%`(funcinst, funcinst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{dt : deftype, mm : moduleinst, fc : funccode}: + `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_datainst: `%<=%`(datainst, datainst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{`b*` : byte*, `b'*` : byte*}: + `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) + -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_eleminst: `%<=%`(eleminst, eleminst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: + `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) + -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_structinst: `%<=%`(structinst, structinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) + -- if (|`fv*`| = |`fv'*`|) + -- if (|`fv*`| = |`mut?*`|) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) + ;; ../../../../specification/wasm-3.0/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'*`}}) + -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) + -- if (|`fv*`| = |`fv'*`|) + -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_exninst: `%<=%`(exninst, exninst) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{ta : tagaddr, `val*` : val*}: + `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Extend_store: `%<=%`(store, store) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, s' : store}: + `%<=%`(s, s') + -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} + -- (if (a < |s'.TAGS_store|))^(a<|s.TAGS_store|){} + -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} + -- (if (a < |s.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (if (a < |s'.GLOBALS_store|))^(a<|s.GLOBALS_store|){} + -- (Extend_globalinst: `%<=%`(s.GLOBALS_store[a], s'.GLOBALS_store[a]))^(a<|s.GLOBALS_store|){} + -- (if (a < |s.MEMS_store|))^(a<|s.MEMS_store|){} + -- (if (a < |s'.MEMS_store|))^(a<|s.MEMS_store|){} + -- (Extend_meminst: `%<=%`(s.MEMS_store[a], s'.MEMS_store[a]))^(a<|s.MEMS_store|){} + -- (if (a < |s.TABLES_store|))^(a<|s.TABLES_store|){} + -- (if (a < |s'.TABLES_store|))^(a<|s.TABLES_store|){} + -- (Extend_tableinst: `%<=%`(s.TABLES_store[a], s'.TABLES_store[a]))^(a<|s.TABLES_store|){} + -- (if (a < |s.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (if (a < |s'.FUNCS_store|))^(a<|s.FUNCS_store|){} + -- (Extend_funcinst: `%<=%`(s.FUNCS_store[a], s'.FUNCS_store[a]))^(a<|s.FUNCS_store|){} + -- (if (a < |s.DATAS_store|))^(a<|s.DATAS_store|){} + -- (if (a < |s'.DATAS_store|))^(a<|s.DATAS_store|){} + -- (Extend_datainst: `%<=%`(s.DATAS_store[a], s'.DATAS_store[a]))^(a<|s.DATAS_store|){} + -- (if (a < |s.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (if (a < |s'.ELEMS_store|))^(a<|s.ELEMS_store|){} + -- (Extend_eleminst: `%<=%`(s.ELEMS_store[a], s'.ELEMS_store[a]))^(a<|s.ELEMS_store|){} + -- (if (a < |s.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (if (a < |s'.STRUCTS_store|))^(a<|s.STRUCTS_store|){} + -- (Extend_structinst: `%<=%`(s.STRUCTS_store[a], s'.STRUCTS_store[a]))^(a<|s.STRUCTS_store|){} + -- (if (a < |s.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (if (a < |s'.ARRAYS_store|))^(a<|s.ARRAYS_store|){} + -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} + -- (if (a < |s.EXNS_store|))^(a<|s.EXNS_store|){} + -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} + -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation State_ok: `|-%:%`(state, context) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, C : context}: + `|-%:%`(`%;%`_state(s, f), C) + -- Store_ok: `|-%:OK`(s,) + -- Frame_ok: `%|-%:%`(s, f, C) + +;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +relation Config_ok: `|-%:%`(config, resulttype) + ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: + `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) + -- State_ok: `|-%:%`(`%;%`_state(s, f), C) + -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 -def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 - def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 - def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) - -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) - -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax A = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax B = nat + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax sym = + | _FIRST(A) + | _DOTS + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax symsplit = + | _FIRST(A) + | _LAST(A) + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax recorddots = () + +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax record = +{ + FIELD_1 A, + FIELD_2 A, + `...` recorddots } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) - -- if (datainst = {BYTES byte*{byte <- `byte*`}}) +;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +syntax pth = + | PTHSYNTAX -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +syntax T = nat -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 -def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 - def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 - def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) - -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) - -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) -} +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) - -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +relation NotationTypingScheme: `%`(nat,) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: + `%`(conclusion,) + -- NotationTypingPremise: `%`(premise_1,) + -- NotationTypingPremise: `%`(premise_2,) + -- NotationTypingPremisedots: `...` + -- NotationTypingPremise: `%`(premise_n,) + +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 -def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 - def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 - def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) - -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) - -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) +;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + rule `i32.add`{C : context}: + `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: + `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) + -- if (x!`%`_idx.0 < |C.GLOBALS_context|) + -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) + + ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: + `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) + -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +relation NotationReduct: `~>%`(instr*,) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `globaltype*` : globaltype*, `expr_G*` : expr*, `memtype*` : memtype*, `tabletype*` : tabletype*, `expr_T*` : expr*, `x*` : idx*, `local**` : local**, `expr_F*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, `i_F*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (mem*{mem <- `mem*`} = MEMORY_mem(memtype)*{memtype <- `memtype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (func*{func <- `func*`} = FUNC_func(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(elemtype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, elemtype <- `elemtype*`, `expr_E*` <- `expr_E**`}) - -- if (aa_I*{aa_I <- `aa_I*`} = $tagsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ga_I*{ga_I <- `ga_I*`} = $globalsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ma_I*{ma_I <- `ma_I*`} = $memsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (ta_I*{ta_I <- `ta_I*`} = $tablesxa(externaddr*{externaddr <- `externaddr*`})) - -- if (fa_I*{fa_I <- `fa_I*`} = $funcsxa(externaddr*{externaddr <- `externaddr*`})) - -- if (dt*{dt <- `dt*`} = $alloctypes(type*{type <- `type*`})) - -- if (fa*{fa <- `fa*`} = (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}) - -- if ((s_1, aa*{aa <- `aa*`}) = $alloctags(s, $subst_all_tagtype(tagtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tagtype <- `tagtype*`})) - -- if ((s_2, ga*{ga <- `ga*`}) = $allocglobals(s_1, $subst_all_globaltype(globaltype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{globaltype <- `globaltype*`}, val_G*{val_G <- `val_G*`})) - -- if ((s_3, ma*{ma <- `ma*`}) = $allocmems(s_2, $subst_all_memtype(memtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{memtype <- `memtype*`})) - -- if ((s_4, ta*{ta <- `ta*`}) = $alloctables(s_3, $subst_all_tabletype(tabletype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{tabletype <- `tabletype*`}, ref_T*{ref_T <- `ref_T*`})) - -- if ((s_5, da*{da <- `da*`}) = $allocdatas(s_4, OK_datatype^|data*{data <- `data*`}|{}, byte*{byte <- `byte*`}*{`byte*` <- `byte**`})) - -- if ((s_6, ea*{ea <- `ea*`}) = $allocelems(s_5, $subst_all_reftype(elemtype, (dt : deftype <: typeuse)*{dt <- `dt*`})*{elemtype <- `elemtype*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if ((s_7, fa*{fa <- `fa*`}) = $allocfuncs(s_6, dt*{dt <- `dt*`}[x!`%`_idx.0]*{x <- `x*`}, FUNC_funccode(x, local*{local <- `local*`}, expr_F)*{expr_F <- `expr_F*`, `local*` <- `local**`, x <- `x*`}, moduleinst^|func*{func <- `func*`}|{})) - -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) - -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + rule 4{q_6 : num_(F64_numtype)}: + `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $rundata_{x : idx, `b*` : byte*, n : n, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) MEMORY.INIT_instr(y, x) DATA.DROP_instr(x)] +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $instrdots : instr* -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [ELEM.DROP_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $runelem_{x : idx, rt : reftype, `e*` : expr*, n : n, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0)) CONST_instr(I32_numtype, `%`_num_(n)) TABLE.INIT_instr(y, x) ELEM.DROP_instr(x)] +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax label = + | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +syntax callframe = + | `FRAME_%{%}`(n : n, frame : frame) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) + +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.94 -def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.41 - def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-167.81 - def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z' : state, val : val, `val'*` : val*, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z', [val] ++ val'*{val' <- `val'*`}) - -- Eval_expr: `%;%~>*%;%`(z, expr, z, [val]) - -- if (z = `%;%`_state(s, f)) - -- if ((s', a) = $allocglobal(s, gt, val)) - -- if ((z', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) +;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) + ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) + -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) + -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `globaltype*` : globaltype*, `expr_G*` : expr*, `tabletype*` : tabletype*, `expr_T*` : expr*, `byte**` : byte**, `datamode*` : datamode*, `reftype*` : reftype*, `expr_E**` : expr**, `elemmode*` : elemmode*, `x?` : idx?, moduleinst_0 : moduleinst, `i_F*` : nat*, z : state, z' : state, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, `i_D*` : nat*, `i_E*` : nat*}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) - -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) - -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} - -- if (module = MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`})) - -- if (global*{global <- `global*`} = GLOBAL_global(globaltype, expr_G)*{expr_G <- `expr_G*`, globaltype <- `globaltype*`}) - -- if (table*{table <- `table*`} = TABLE_table(tabletype, expr_T)*{expr_T <- `expr_T*`, tabletype <- `tabletype*`}) - -- if (data*{data <- `data*`} = DATA_data(byte*{byte <- `byte*`}, datamode)*{`byte*` <- `byte**`, datamode <- `datamode*`}) - -- if (elem*{elem <- `elem*`} = ELEM_elem(reftype, expr_E*{expr_E <- `expr_E*`}, elemmode)*{elemmode <- `elemmode*`, `expr_E*` <- `expr_E**`, reftype <- `reftype*`}) - -- if (start?{start <- `start?`} = START_start(x)?{x <- `x?`}) - -- if (moduleinst_0 = {TYPES $alloctypes(type*{type <- `type*`}), TAGS [], GLOBALS $globalsxa(externaddr*{externaddr <- `externaddr*`}), MEMS [], TABLES [], FUNCS $funcsxa(externaddr*{externaddr <- `externaddr*`}) ++ (|s.FUNCS_store| + i_F)^(i_F<|func*{func <- `func*`}|){i_F <- `i_F*`}, DATAS [], ELEMS [], EXPORTS []}) - -- if (z = `%;%`_state(s, {LOCALS [], MODULE moduleinst_0})) - -- if ((z', val_G*{val_G <- `val_G*`}) = $evalglobals(z, globaltype*{globaltype <- `globaltype*`}, expr_G*{expr_G <- `expr_G*`})) - -- (Eval_expr: `%;%~>*%;%`(z', expr_T, z', [(ref_T : ref <: val)]))*{expr_T <- `expr_T*`, ref_T <- `ref_T*`} - -- (Eval_expr: `%;%~>*%;%`(z', expr_E, z', [(ref_E : ref <: val)]))*{expr_E <- `expr_E*`, ref_E <- `ref_E*`}*{`expr_E*` <- `expr_E**`, `ref_E*` <- `ref_E**`} - -- if ((s', moduleinst) = $allocmodule(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`})) - -- if (instr_D*{instr_D <- `instr_D*`} = $concat_(syntax instr, $rundata_(`%`_dataidx(i_D), data*{data <- `data*`}[i_D])^(i_D<|data*{data <- `data*`}|){i_D <- `i_D*`})) - -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){i_E <- `i_E*`})) - -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +syntax symdots = + | `%`(i : nat,) + -- if (i = 0) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec -def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec - def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [REF.FUNC_ADDR_instr(funcaddr) CALL_REF_instr((s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse))]) - -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} +;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +def $var(syntax X) : nat + ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + def $var{syntax X}(syntax X) = 0 + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax abbreviated = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax expanded = () + +;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +syntax syntax = () ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bbyte : byte ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``) + prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec rec { @@ -30393,29 +32517,33 @@ rec { ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 - prod{n : n} `%`_byte(n):Bbyte => `%`_uN(n) + prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 - prod{n : n, m : m} {{`%`_byte(n):Bbyte} {`%`_uN(m):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat))) + prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +rec { + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN((n : nat <:> int)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_byte(n):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int))) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, i : uN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))} {{`%`_byte(n):Bbyte} {i:BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * i!`%`_uN.0) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int)) + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) +} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) @@ -30425,37 +32553,47 @@ grammar BfN(N : N) : fN(N) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu32 : u32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(32) => `%`_u32(n) + prod{`` : uN(32)} ``:BuN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bu64 : u64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n} `%`_uN(n):BuN(64) => `%`_u64(n) + prod{`` : uN(64)} ``:BuN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bs33 : s33 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{i : sN(33)} i:BsN(33) => i + prod{`` : sN(33)} ``:BsN(33) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi32 : i32 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(32)} ``:BuN(32) => `` + +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bi64 : i64 + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{`` : uN(64)} ``:BuN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf32 : f32 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(32)} p:BfN(32) => p + prod{`` : fN(32)} ``:BfN(32) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bf64 : f64 ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{p : fN(64)} p:BfN(64) => p + prod{`` : fN(64)} ``:BfN(64) => `` ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{n : n, `el*` : el*} {{`%`_u32(n):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} + prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Bname : name ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec - prod{`b*` : byte*, name : name} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name + prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -30503,6 +32641,11 @@ grammar Blocalidx : localidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x +;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +grammar Bfieldidx : fieldidx + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + prod{x : idx} x:Bu32 => x + ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec grammar Blabelidx : labelidx ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec @@ -30593,7 +32736,7 @@ grammar Bvaltype : valtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bresulttype : resulttype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`}) + prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmut : mut? @@ -30619,16 +32762,16 @@ grammar Bstoragetype : storagetype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bfieldtype : fieldtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{zt : storagetype, `mut?` : mut?} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) + prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bcomptype : comptype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})) + prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`}):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`}):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})) + prod{`t_1*` : valtype*, `t_2*` : valtype*} {{0x60} {`%`_resulttype(t_1*{t_1 <- `t_1*`},):Bresulttype} {`%`_resulttype(t_2*{t_2 <- `t_2*`},):Bresulttype}} => `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bsubtype : subtype @@ -30642,20 +32785,20 @@ grammar Bsubtype : subtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Brectype : rectype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`})) + prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st])) + prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x00} {`%`_u64(n):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x01} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n} {{0x04} {`%`_u64(n):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?())) + prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{n : n, m : m} {{0x05} {`%`_u64(n):Bu64} {`%`_u64(m):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m)))) + prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btagtype : tagtype @@ -30665,7 +32808,7 @@ grammar Btagtype : tagtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bglobaltype : globaltype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{t : valtype, `mut?` : mut?} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) + prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bmemtype : memtype @@ -30675,7 +32818,7 @@ grammar Bmemtype : memtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Btabletype : tabletype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec - prod{rt : reftype, at : addrtype, lim : limits} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) + prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec grammar Bexterntype : externtype @@ -30690,6 +32833,17 @@ grammar Bexterntype : externtype ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +grammar Bcastop : castop + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x00 => (?(), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x01 => (?(NULL_null), ?()) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x02 => (?(), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + prod 0x03 => (?(NULL_null), ?(NULL_null)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -30697,7 +32851,7 @@ grammar Bblocktype : blocktype ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_funcidx((i!`%`_s33.0 : int <:> nat))) + prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -30711,41 +32865,24 @@ grammar Bcatch : catch ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax memidxop = (memidx, memarg) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Bmemarg : memidxop ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, m : m} {{`%`_u32(n):Bu32} {`%`_u32(m):Bu32}} => (`%`_memidx(0), {ALIGN `%`_u32(n), OFFSET `%`_u32(m)}) + prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{n : n, x : idx, m : m} {{`%`_u32(n):Bu32} {x:Bmemidx} {`%`_u32(m):Bu32}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat)), OFFSET `%`_u32(m)}) + prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -syntax castop = (null?, null?) - -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec -grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod 0x03 => (?(NULL_null), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec - prod{l : labelidx} `%`_byte(l!`%`_labelidx.0):Bbyte => `%`_laneidx(l!`%`_labelidx.0) + prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.1-815.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -30757,996 +32894,1000 @@ grammar Binstr : instr prod 0x1B => SELECT_instr(?()) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:24.5-24.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:25.5-25.56 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:26.5-26.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:27.5-28.55 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.22 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-35.32 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:36.5-36.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:37.5-37.19 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:38.5-38.30 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:39.5-39.60 - prod{y : idx, x : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.67 - prod{y : idx, x : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.81 - prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-55.36 - prod{x : idx} {{0x20} {x:Blocalidx}} => LOCAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:56.5-56.36 - prod{x : idx} {{0x21} {x:Blocalidx}} => LOCAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-57.36 - prod{x : idx} {{0x22} {x:Blocalidx}} => LOCAL.TEE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:61.5-61.38 - prod{x : idx} {{0x23} {x:Bglobalidx}} => GLOBAL.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:62.5-62.38 - prod{x : idx} {{0x24} {x:Bglobalidx}} => GLOBAL.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:69.5-69.36 - prod{x : idx} {{0x25} {x:Btableidx}} => TABLE.GET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:70.5-70.36 - prod{x : idx} {{0x26} {x:Btableidx}} => TABLE.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.58 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(12):Bu32} {y:Belemidx} {x:Btableidx}} => TABLE.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.43 - prod{x : idx} {{0xFC} {`%`_u32(13):Bu32} {x:Belemidx}} => ELEM.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.67 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => TABLE.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:74.5-74.45 - prod{x : idx} {{0xFC} {`%`_u32(15):Bu32} {x:Btableidx}} => TABLE.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:75.5-75.45 - prod{x : idx} {{0xFC} {`%`_u32(16):Bu32} {x:Btableidx}} => TABLE.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:76.5-76.45 - prod{x : idx} {{0xFC} {`%`_u32(17):Bu32} {x:Btableidx}} => TABLE.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(25,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:71.5-71.36 + prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:93.5-93.50 - prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:94.5-94.50 - prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:95.5-95.51 - prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:96.5-96.51 - prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:97.5-97.50 - prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:98.5-98.50 - prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:99.5-99.51 - prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:100.5-100.51 - prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:101.5-101.51 - prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:102.5-102.51 - prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:103.5-103.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:104.5-104.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.45 - prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.46 - prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.45 - prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.46 - prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.46 - prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.36 - prod{x : idx} {{0x3F} {x:Bmemidx}} => MEMORY.SIZE_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.36 - prod{x : idx} {{0x40} {x:Bmemidx}} => MEMORY.GROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.56 - prod{y : idx, x : idx} {{0xFC} {`%`_u32(8):Bu32} {y:Bdataidx} {x:Bmemidx}} => MEMORY.INIT_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.42 - prod{x : idx} {{0xFC} {`%`_u32(9):Bu32} {x:Bdataidx}} => DATA.DROP_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.64 - prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => MEMORY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.44 - prod{x : idx} {{0xFC} {`%`_u32(11):Bu32} {x:Bmemidx}} => MEMORY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.37 - prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => REF.NULL_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.24 - prod 0xD1 => REF.IS_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:134.5-134.34 - prod{x : idx} {{0xD2} {x:Bfuncidx}} => REF.FUNC_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:135.5-135.19 - prod 0xD3 => REF.EQ_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:136.5-136.28 - prod 0xD4 => REF.AS_NON_NULL_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:137.5-137.37 - prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:138.5-138.41 - prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.43 - prod{x : idx} {{0xFB} {`%`_u32(0):Bu32} {x:Btypeidx}} => STRUCT.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.51 - prod{x : idx} {{0xFB} {`%`_u32(1):Bu32} {x:Btypeidx}} => STRUCT.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(2):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(3):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.54 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(4):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.GET_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.52 - prod{x : idx, i : u32} {{0xFB} {`%`_u32(5):Bu32} {x:Btypeidx} {i:Bu32}} => STRUCT.SET_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:151.5-151.42 - prod{x : idx} {{0xFB} {`%`_u32(6):Bu32} {x:Btypeidx}} => ARRAY.NEW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.50 - prod{x : idx} {{0xFB} {`%`_u32(7):Bu32} {x:Btypeidx}} => ARRAY.NEW_DEFAULT_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.57 - prod{x : idx, n : n} {{0xFB} {`%`_u32(8):Bu32} {x:Btypeidx} {`%`_u32(n):Bu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.60 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(9):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.NEW_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.61 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(10):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.NEW_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.43 - prod{x : idx} {{0xFB} {`%`_u32(11):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.45 - prod{x : idx} {{0xFB} {`%`_u32(12):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:158.5-158.45 - prod{x : idx} {{0xFB} {`%`_u32(13):Bu32} {x:Btypeidx}} => ARRAY.GET_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:159.5-159.43 - prod{x : idx} {{0xFB} {`%`_u32(14):Bu32} {x:Btypeidx}} => ARRAY.SET_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:160.5-160.30 - prod {{0xFB} {`%`_u32(15):Bu32}} => ARRAY.LEN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.44 - prod{x : idx} {{0xFB} {`%`_u32(16):Bu32} {x:Btypeidx}} => ARRAY.FILL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.65 - prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => ARRAY.COPY_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(18):Bu32} {x:Btypeidx} {y:Bdataidx}} => ARRAY.INIT_DATA_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.62 - prod{x : idx, y : idx} {{0xFB} {`%`_u32(19):Bu32} {x:Btypeidx} {y:Belemidx}} => ARRAY.INIT_ELEM_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(20):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(21):Bu32} {ht:Bheaptype}} => REF.TEST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.51 - prod{ht : heaptype} {{0xFB} {`%`_u32(22):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.56 - prod{ht : heaptype} {{0xFB} {`%`_u32(23):Bu32} {ht:Bheaptype}} => REF.CAST_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-173.100 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(24):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-175.105 - prod{`null_1?` : null?, `null_2?` : null?, l : labelidx, ht_1 : heaptype, ht_2 : heaptype} {{0xFB} {`%`_u32(25):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_FAIL_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + prod 0xD1 => `REF.IS_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + prod 0xD3 => `REF.EQ`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + prod 0xD4 => `REF.AS_NON_NULL`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 - prod {{0xFB} {`%`_u32(26):Bu32}} => ANY.CONVERT_EXTERN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:180.5-180.39 - prod {{0xFB} {`%`_u32(27):Bu32}} => EXTERN.CONVERT_ANY_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.28 - prod {{0xFB} {`%`_u32(28):Bu32}} => REF.I31_instr + prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 - prod {{0xFB} {`%`_u32(29):Bu32}} => I31.GET_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:186.5-186.30 - prod {{0xFB} {`%`_u32(30):Bu32}} => I31.GET_instr(U_sx) + prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 - prod{n : n} {{0x41} {`%`_u32(n):Bu32}} => CONST_instr(I32_numtype, `%`_num_(n)) + prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 - prod{n : n} {{0x42} {`%`_u64(n):Bu64}} => CONST_instr(I64_numtype, `%`_num_(n)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:196.5-196.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:200.5-200.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:213.5-213.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:217.5-217.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:230.5-230.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:239.5-239.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:248.5-248.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:254.5-254.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:272.5-272.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:278.5-278.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.31 - prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:283.5-283.32 - prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.31 - prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 - prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:289.5-289.32 - prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.28 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:307.5-307.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:317.5-317.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:327.5-327.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.25 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.27 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.29 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:337.5-337.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.26 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:347.5-347.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.31 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.35 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.34 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.33 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.34 - prod 0xBB => CVTOP_instr(F32_numtype, F64_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:376.5-376.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 - prod {{0xFC} {`%`_u32(0):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 - prod {{0xFC} {`%`_u32(1):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 - prod {{0xFC} {`%`_u32(2):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 - prod {{0xFC} {`%`_u32(3):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 - prod {{0xFC} {`%`_u32(4):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) + prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 - prod {{0xFC} {`%`_u32(5):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 - prod {{0xFC} {`%`_u32(6):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:387.5-387.45 - prod {{0xFC} {`%`_u32(7):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(13):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.38 - prod {{0xFC} {`%`_u32(14):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(15):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:394.5-394.45 - prod {{0xFC} {`%`_u32(16):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.50 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:405.5-405.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.70 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:407.5-407.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.71 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.61 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.63 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.52 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.72 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.73 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.74 - prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.62 - prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:429.5-429.72 - prod{`b*` : byte*} {{0xFD} {`%`_u32(12):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.61 - prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_laneidx(l!`%`_labelidx.0)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.49 - prod {{0xFD} {`%`_u32(14):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.58 - prod {{0xFD} {`%`_u32(256):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 - prod {{0xFD} {`%`_u32(15):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 - prod {{0xFD} {`%`_u32(16):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 - prod {{0xFD} {`%`_u32(17):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 - prod {{0xFD} {`%`_u32(18):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 - prod {{0xFD} {`%`_u32(19):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.38 - prod {{0xFD} {`%`_u32(20):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 - prod{l : labelidx} {{0xFD} {`%`_u32(21):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.60 - prod{l : labelidx} {{0xFD} {`%`_u32(22):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 - prod{l : labelidx} {{0xFD} {`%`_u32(23):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 - prod{l : labelidx} {{0xFD} {`%`_u32(24):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.60 - prod{l : labelidx} {{0xFD} {`%`_u32(25):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 - prod{l : labelidx} {{0xFD} {`%`_u32(26):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 - prod{l : labelidx} {{0xFD} {`%`_u32(27):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 - prod{l : labelidx} {{0xFD} {`%`_u32(28):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 - prod{l : labelidx} {{0xFD} {`%`_u32(29):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 - prod{l : labelidx} {{0xFD} {`%`_u32(30):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 - prod{l : labelidx} {{0xFD} {`%`_u32(31):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 - prod{l : labelidx} {{0xFD} {`%`_u32(32):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 - prod{l : labelidx} {{0xFD} {`%`_u32(33):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.58 - prod{l : labelidx} {{0xFD} {`%`_u32(34):Bu32} {`%`_laneidx(l!`%`_labelidx.0):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 - prod {{0xFD} {`%`_u32(35):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.41 - prod {{0xFD} {`%`_u32(36):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 - prod {{0xFD} {`%`_u32(37):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 - prod {{0xFD} {`%`_u32(38):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 - prod {{0xFD} {`%`_u32(39):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 - prod {{0xFD} {`%`_u32(40):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 - prod {{0xFD} {`%`_u32(41):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 - prod {{0xFD} {`%`_u32(42):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 - prod {{0xFD} {`%`_u32(43):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 - prod {{0xFD} {`%`_u32(44):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 - prod {{0xFD} {`%`_u32(45):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.41 - prod {{0xFD} {`%`_u32(46):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 - prod {{0xFD} {`%`_u32(47):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 - prod {{0xFD} {`%`_u32(48):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 - prod {{0xFD} {`%`_u32(49):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 - prod {{0xFD} {`%`_u32(50):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 - prod {{0xFD} {`%`_u32(51):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 - prod {{0xFD} {`%`_u32(52):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 - prod {{0xFD} {`%`_u32(53):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 - prod {{0xFD} {`%`_u32(54):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 - prod {{0xFD} {`%`_u32(55):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.41 - prod {{0xFD} {`%`_u32(56):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 - prod {{0xFD} {`%`_u32(57):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 - prod {{0xFD} {`%`_u32(58):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 - prod {{0xFD} {`%`_u32(59):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 - prod {{0xFD} {`%`_u32(60):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 - prod {{0xFD} {`%`_u32(61):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 - prod {{0xFD} {`%`_u32(62):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 - prod {{0xFD} {`%`_u32(63):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.43 - prod {{0xFD} {`%`_u32(64):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 - prod {{0xFD} {`%`_u32(65):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 - prod {{0xFD} {`%`_u32(66):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 - prod {{0xFD} {`%`_u32(67):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 - prod {{0xFD} {`%`_u32(68):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 - prod {{0xFD} {`%`_u32(69):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 - prod {{0xFD} {`%`_u32(70):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 - prod {{0xFD} {`%`_u32(71):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 - prod {{0xFD} {`%`_u32(72):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 - prod {{0xFD} {`%`_u32(73):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 - prod {{0xFD} {`%`_u32(74):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 - prod {{0xFD} {`%`_u32(75):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.41 - prod {{0xFD} {`%`_u32(76):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:522.5-522.36 - prod {{0xFD} {`%`_u32(77):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.37 - prod {{0xFD} {`%`_u32(78):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.40 - prod {{0xFD} {`%`_u32(79):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.36 - prod {{0xFD} {`%`_u32(80):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.37 - prod {{0xFD} {`%`_u32(81):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.44 - prod {{0xFD} {`%`_u32(82):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:537.5-537.43 - prod {{0xFD} {`%`_u32(83):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 - prod {{0xFD} {`%`_u32(96):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.41 - prod {{0xFD} {`%`_u32(97):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.44 - prod {{0xFD} {`%`_u32(98):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.48 - prod {{0xFD} {`%`_u32(99):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:551.5-551.41 - prod {{0xFD} {`%`_u32(100):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 - prod {{0xFD} {`%`_u32(101):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:556.5-556.53 - prod {{0xFD} {`%`_u32(102):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.45 - prod {{0xFD} {`%`_u32(107):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 - prod {{0xFD} {`%`_u32(108):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.47 - prod {{0xFD} {`%`_u32(109):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.43 - prod {{0xFD} {`%`_u32(110):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 - prod {{0xFD} {`%`_u32(111):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.49 - prod {{0xFD} {`%`_u32(112):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.43 - prod {{0xFD} {`%`_u32(113):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 - prod {{0xFD} {`%`_u32(114):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.49 - prod {{0xFD} {`%`_u32(115):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 - prod {{0xFD} {`%`_u32(118):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 - prod {{0xFD} {`%`_u32(119):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 - prod {{0xFD} {`%`_u32(120):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.45 - prod {{0xFD} {`%`_u32(121):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:576.5-576.46 - prod {{0xFD} {`%`_u32(123):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 - prod {{0xFD} {`%`_u32(124):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:581.5-581.70 - prod {{0xFD} {`%`_u32(125):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 - prod {{0xFD} {`%`_u32(128):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.42 - prod {{0xFD} {`%`_u32(129):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.53 - prod {{0xFD} {`%`_u32(130):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.43 - prod {{0xFD} {`%`_u32(142):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 - prod {{0xFD} {`%`_u32(143):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.49 - prod {{0xFD} {`%`_u32(144):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.43 - prod {{0xFD} {`%`_u32(145):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 - prod {{0xFD} {`%`_u32(146):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.49 - prod {{0xFD} {`%`_u32(147):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.43 - prod {{0xFD} {`%`_u32(149):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 - prod {{0xFD} {`%`_u32(150):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 - prod {{0xFD} {`%`_u32(151):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 - prod {{0xFD} {`%`_u32(152):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.45 - prod {{0xFD} {`%`_u32(153):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.46 - prod {{0xFD} {`%`_u32(155):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.57 - prod {{0xFD} {`%`_u32(273):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.49 - prod {{0xFD} {`%`_u32(131):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:611.5-611.41 - prod {{0xFD} {`%`_u32(132):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 - prod {{0xFD} {`%`_u32(133):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:616.5-616.53 - prod {{0xFD} {`%`_u32(134):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.63 - prod {{0xFD} {`%`_u32(135):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.64 - prod {{0xFD} {`%`_u32(136):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.63 - prod {{0xFD} {`%`_u32(137):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:623.5-623.64 - prod {{0xFD} {`%`_u32(138):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.45 - prod {{0xFD} {`%`_u32(139):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 - prod {{0xFD} {`%`_u32(140):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.47 - prod {{0xFD} {`%`_u32(141):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.66 - prod {{0xFD} {`%`_u32(156):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.67 - prod {{0xFD} {`%`_u32(157):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.66 - prod {{0xFD} {`%`_u32(158):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 - prod {{0xFD} {`%`_u32(159):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:637.5-637.67 - prod {{0xFD} {`%`_u32(274):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `RELAXED_DOTS`_vextbinop__) + prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 - prod {{0xFD} {`%`_u32(126):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:642.5-642.70 - prod {{0xFD} {`%`_u32(127):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 - prod {{0xFD} {`%`_u32(160):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.42 - prod {{0xFD} {`%`_u32(161):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.49 - prod {{0xFD} {`%`_u32(163):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:655.5-655.41 - prod {{0xFD} {`%`_u32(164):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.63 - prod {{0xFD} {`%`_u32(167):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.64 - prod {{0xFD} {`%`_u32(168):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.63 - prod {{0xFD} {`%`_u32(169):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:662.5-662.64 - prod {{0xFD} {`%`_u32(170):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.45 - prod {{0xFD} {`%`_u32(171):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 - prod {{0xFD} {`%`_u32(172):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.49 - prod {{0xFD} {`%`_u32(173):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 - prod {{0xFD} {`%`_u32(174):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 - prod {{0xFD} {`%`_u32(177):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.43 - prod {{0xFD} {`%`_u32(181):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 - prod {{0xFD} {`%`_u32(182):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 - prod {{0xFD} {`%`_u32(183):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 - prod {{0xFD} {`%`_u32(184):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.45 - prod {{0xFD} {`%`_u32(185):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.59 - prod {{0xFD} {`%`_u32(186):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.66 - prod {{0xFD} {`%`_u32(188):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.67 - prod {{0xFD} {`%`_u32(189):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.66 - prod {{0xFD} {`%`_u32(190):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.67 - prod {{0xFD} {`%`_u32(191):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:690.5-690.72 - prod {{0xFD} {`%`_u32(275):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `RELAXED_DOT_ADDS`_vextternop__) + prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 - prod {{0xFD} {`%`_u32(192):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.42 - prod {{0xFD} {`%`_u32(193):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.49 - prod {{0xFD} {`%`_u32(195):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:703.5-703.41 - prod {{0xFD} {`%`_u32(196):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.63 - prod {{0xFD} {`%`_u32(199):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.64 - prod {{0xFD} {`%`_u32(200):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.63 - prod {{0xFD} {`%`_u32(201):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:710.5-710.64 - prod {{0xFD} {`%`_u32(202):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.45 - prod {{0xFD} {`%`_u32(203):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 - prod {{0xFD} {`%`_u32(204):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:716.5-716.49 - prod {{0xFD} {`%`_u32(205):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 - prod {{0xFD} {`%`_u32(206):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 - prod {{0xFD} {`%`_u32(209):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.43 - prod {{0xFD} {`%`_u32(213):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 - prod {{0xFD} {`%`_u32(214):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.42 - prod {{0xFD} {`%`_u32(215):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 - prod {{0xFD} {`%`_u32(216):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 - prod {{0xFD} {`%`_u32(217):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 - prod {{0xFD} {`%`_u32(218):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:731.5-731.46 - prod {{0xFD} {`%`_u32(219):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.66 - prod {{0xFD} {`%`_u32(220):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.67 - prod {{0xFD} {`%`_u32(221):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.66 - prod {{0xFD} {`%`_u32(222):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.67 - prod {{0xFD} {`%`_u32(223):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.43 - prod {{0xFD} {`%`_u32(103):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 - prod {{0xFD} {`%`_u32(104):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.44 - prod {{0xFD} {`%`_u32(105):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.46 - prod {{0xFD} {`%`_u32(106):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 - prod {{0xFD} {`%`_u32(224):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.42 - prod {{0xFD} {`%`_u32(225):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 - prod {{0xFD} {`%`_u32(227):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 - prod {{0xFD} {`%`_u32(228):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 - prod {{0xFD} {`%`_u32(229):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 - prod {{0xFD} {`%`_u32(230):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 - prod {{0xFD} {`%`_u32(231):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 - prod {{0xFD} {`%`_u32(232):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.43 - prod {{0xFD} {`%`_u32(233):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 - prod {{0xFD} {`%`_u32(234):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.44 - prod {{0xFD} {`%`_u32(235):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 - prod {{0xFD} {`%`_u32(269):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:761.5-761.51 - prod {{0xFD} {`%`_u32(270):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.53 - prod {{0xFD} {`%`_u32(261):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.54 - prod {{0xFD} {`%`_u32(262):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.43 - prod {{0xFD} {`%`_u32(116):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 - prod {{0xFD} {`%`_u32(117):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.44 - prod {{0xFD} {`%`_u32(122):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.46 - prod {{0xFD} {`%`_u32(148):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 - prod {{0xFD} {`%`_u32(236):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.42 - prod {{0xFD} {`%`_u32(237):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 - prod {{0xFD} {`%`_u32(239):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 - prod {{0xFD} {`%`_u32(240):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 - prod {{0xFD} {`%`_u32(241):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 - prod {{0xFD} {`%`_u32(242):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 - prod {{0xFD} {`%`_u32(243):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 - prod {{0xFD} {`%`_u32(244):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.43 - prod {{0xFD} {`%`_u32(245):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 - prod {{0xFD} {`%`_u32(246):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.44 - prod {{0xFD} {`%`_u32(247):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 - prod {{0xFD} {`%`_u32(271):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.51 - prod {{0xFD} {`%`_u32(272):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.53 - prod {{0xFD} {`%`_u32(263):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.54 - prod {{0xFD} {`%`_u32(264):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 - prod {{0xFD} {`%`_u32(265):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 - prod {{0xFD} {`%`_u32(266):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 - prod {{0xFD} {`%`_u32(267):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.59 - prod {{0xFD} {`%`_u32(268):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 - prod {{0xFD} {`%`_u32(94):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.61 - prod {{0xFD} {`%`_u32(95):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 - prod {{0xFD} {`%`_u32(248):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.62 - prod {{0xFD} {`%`_u32(249):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 - prod {{0xFD} {`%`_u32(250):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.60 - prod {{0xFD} {`%`_u32(251):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 - prod {{0xFD} {`%`_u32(252):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.67 - prod {{0xFD} {`%`_u32(253):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 - prod {{0xFD} {`%`_u32(254):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.64 - prod {{0xFD} {`%`_u32(255):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 - prod {{0xFD} {`%`_u32(257):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.66 - prod {{0xFD} {`%`_u32(258):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 - prod {{0xFD} {`%`_u32(259):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:815.5-815.71 - prod {{0xFD} {`%`_u32(260):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec @@ -31757,7 +33898,7 @@ grammar Bexpr : expr ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, `en*` : en*} {{`%`_byte(N):Bbyte} {`%`_u32(len):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} + prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod eps => [] @@ -31765,12 +33906,12 @@ grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustom : ()* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{Bname} {Bbyte*{}}} => [()] + prod {{Bname} {Bbyte*{}}} => [] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcustomsec : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod Bsection_(0, syntax (), grammar Bcustom) => () + prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btype : type @@ -31800,7 +33941,7 @@ grammar Bfuncsec : typeidx* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Btable : table ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [REF.NULL_instr(ht)]) + prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) @@ -31845,9 +33986,6 @@ grammar Bstart : start* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax startopt = start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -31856,39 +33994,36 @@ grammar Bstartsec : start? ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemkind : reftype ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod 0x00 => REF_reftype(?(NULL_null), FUNC_heaptype) + prod 0x00 => REF_reftype(?(), FUNC_heaptype) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belem : elem ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_o : expr, `y*` : idx*} {{`%`_u32(0):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0), e_o)) + prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(1):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], PASSIVE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, rt : reftype, `y*` : idx*} {{`%`_u32(2):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) + prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `y*` : idx*} {{`%`_u32(3):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [REF.FUNC_instr(y)*{y <- `y*`}], DECLARE_elemmode) + prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e_O : expr, `e*` : expr*} {{`%`_u32(4):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0), e_O)) + prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(5):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e_O : expr, `e*` : expr*} {{`%`_u32(6):Bu32} {x:Btableidx} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) + prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{rt : reftype, `e*` : expr*} {{`%`_u32(7):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) + prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Belemsec : elem* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax code = (local*, expr) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Blocals : local* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n, t : valtype} {{`%`_u32(n):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} + prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bfunc : code @@ -31899,7 +34034,7 @@ grammar Bfunc : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bcode : code ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{len : nat, code : code} {{`%`_u32(len):Bu32} {code:Bfunc}} => code + prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec @@ -31910,11 +34045,11 @@ grammar Bcodesec : code* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdata : data ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{e : expr, `b*` : byte*} {{`%`_u32(0):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0), e)) + prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`b*` : byte*} {{`%`_u32(1):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) + prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{x : idx, e : expr, `b*` : byte*} {{`%`_u32(2):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) + prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatasec : data* @@ -31924,10 +34059,7 @@ grammar Bdatasec : data* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacnt : u32* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{n : n} `%`_u32(n):Bu32 => [`%`_u32(n)] - -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec -syntax nopt = u32* + prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bdatacntsec : u32? @@ -31947,17 +34079,17 @@ grammar Btagsec : tag* ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmagic : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x00} {0x61} {0x73} {0x6D}} => () + prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bversion : () ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod {{0x01} {0x00} {0x00} {0x00}} => () + prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec grammar Bmodule : module ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec - prod{`type*` : type*, `import*` : import*, `typeidx*` : typeidx*, `table*` : table*, `mem*` : mem*, `tag*` : tag*, `global*` : global*, `export*` : export*, `start?` : start?, `elem*` : elem*, `n?` : n?, `local**` : local**, `expr*` : expr*, `data*` : data*, `func*` : func*} {{Bmagic} {Bversion} {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} @@ -31965,9 +34097,9 @@ grammar Bmodule : module ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tchar : char ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``) + prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec - prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``) + prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec grammar Tsource : () @@ -31992,57 +34124,57 @@ grammar TfNplain : () ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``) + prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``) + prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``) + prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x21 => `%`_char(``) + prod{`` : nat} ``:0x21 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x23 => `%`_char(``) + prod{`` : nat} ``:0x23 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x24 => `%`_char(``) + prod{`` : nat} ``:0x24 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x25 => `%`_char(``) + prod{`` : nat} ``:0x25 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x26 => `%`_char(``) + prod{`` : nat} ``:0x26 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x27 => `%`_char(``) + prod{`` : nat} ``:0x27 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2A => `%`_char(``) + prod{`` : nat} ``:0x2A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2B => `%`_char(``) + prod{`` : nat} ``:0x2B => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2D => `%`_char(``) + prod{`` : nat} ``:0x2D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2E => `%`_char(``) + prod{`` : nat} ``:0x2E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x2F => `%`_char(``) + prod{`` : nat} ``:0x2F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3A => `%`_char(``) + prod{`` : nat} ``:0x3A => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3C => `%`_char(``) + prod{`` : nat} ``:0x3C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3D => `%`_char(``) + prod{`` : nat} ``:0x3D => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3E => `%`_char(``) + prod{`` : nat} ``:0x3E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x3F => `%`_char(``) + prod{`` : nat} ``:0x3F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x40 => `%`_char(``) + prod{`` : nat} ``:0x40 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5C => `%`_char(``) + prod{`` : nat} ``:0x5C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5E => `%`_char(``) + prod{`` : nat} ``:0x5E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x5F => `%`_char(``) + prod{`` : nat} ``:0x5F => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x60 => `%`_char(``) + prod{`` : nat} ``:0x60 => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7C => `%`_char(``) + prod{`` : nat} ``:0x7C => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : nat} ``:0x7E => `%`_char(``) + prod{`` : nat} ``:0x7E => `%`_char(``,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tdigit : nat @@ -32111,21 +34243,21 @@ grammar Thexnum : nat grammar Tstringchar : char ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tchar => c - -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34))) /\ (c =/= `%`_char(92))) + -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\t" => `%`_char(9) + prod "\\t" => `%`_char(9,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\n" => `%`_char(10) + prod "\\n" => `%`_char(10,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\r" => `%`_char(13) + prod "\\r" => `%`_char(13,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\"" => `%`_char(34) + prod "\\\"" => `%`_char(34,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\'" => `%`_char(39) + prod "\\'" => `%`_char(39,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "\\\\" => `%`_char(92) + prod "\\\\" => `%`_char(92,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n) + prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32133,7 +34265,7 @@ grammar Tstringelem : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2))] + prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tstring : byte* @@ -32144,15 +34276,15 @@ grammar Tstring : byte* ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tname : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`b*` : byte*, `c*` : char*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tid : name ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`}):Tname}} => `%`_name(c*{c <- `c*`}) + prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec @@ -32205,13 +34337,13 @@ grammar Tblockcomment : () grammar Tblockchar : () ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(41))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 - -- if ((c =/= `%`_char(59)) /\ (c =/= `%`_char(40))) + -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } @@ -32292,24 +34424,24 @@ grammar Tnum : nat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TuN(N : N) : uN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} n:Tnum => `%`_uN(n) + prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n) + prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TsN(N : N) : sN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{s : int, n : n} {{s:Tsign} {`%`_uN(n):TuN(N)}} => `%`_sN((s * (n : nat <:> int))) + prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar TiN(N : N) : iN(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} `%`_uN(n):TuN(N) => `%`_iN(n) + prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0)) + prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec rec { @@ -32347,9 +34479,6 @@ grammar Thexmant : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -def $ieee_(N : N, rat : rat) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tfloat : rat ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32371,9 +34500,9 @@ grammar TfNmag(N : N) : fNmag(N) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod "inf" => INF_fNmag ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod "nan" => NAN_fNmag($canon_(N)) + prod "nan" => NAN_fNmag($canon_(N),) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n) + prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32418,11 +34547,6 @@ grammar Ti64 : u64 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -grammar Ti128 : u128 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{`` : iN(128)} ``:TiN(128) => `` - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tf32 : f32 ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32439,61 +34563,12 @@ grammar Tlist(syntax el, grammar TX : el) : el* prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax idctxt = -{ - TYPES{`name?*` : name?*} name?*, - TAGS{`name?*` : name?*} name?*, - GLOBALS{`name?*` : name?*} name?*, - MEMS{`name?*` : name?*} name?*, - TABLES{`name?*` : name?*} name?*, - FUNCS{`name?*` : name?*} name?*, - DATAS{`name?*` : name?*} name?*, - ELEMS{`name?*` : name?*} name?*, - LOCALS{`name?*` : name?*} name?*, - LABELS{`name?*` : name?*} name?*, - FIELDS{`name?**` : name?**} name?**, - TYPEDEFS{`subtype?*` : subtype?*} subtype?* -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -syntax I = idctxt - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.57 -def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.29 - def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:157.1-157.52 - def $concat_idctxt{I : I, I' : I}([I I']) = I +++ $concat_idctxt(I'*{}) -} - -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec -relation Idctxt_ok: `|-%:OK`(idctxt) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - rule _{I : I, `field**` : char**}: - `|-%:OK`(I) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TAGS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.GLOBALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.MEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TABLES_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.FUNCS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.DATAS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.ELEMS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LOCALS_I)) - -- if $disjoint_(syntax name, $concatopt_(syntax name, I.LABELS_I)) - -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`}))])))*{`field*` <- `field**`} - -- if ([?(`%`_name(field*{field <- `field*`}))*{`field*` <- `field**`}] = I.FIELDS_I) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec prod{x : idx} x:Tu32 => x ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec - prod{id : name, x : idx} id:Tid => x + prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec @@ -32657,12 +34732,12 @@ grammar Tfieldtype_(I : I) : fieldtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, ft : fieldtype} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, t : valtype} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`})))) + prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tresult_(I : I) : valtype @@ -32672,11 +34747,11 @@ grammar Tresult_(I : I) : valtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}))))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}], TYPEDEFS []}) + prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}))))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`})), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{`t_1*` : valtype*, `t_2*` : valtype*, `id?*` : char?*} {{"("} {"func"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tlist(syntax (valtype, name?), grammar Tparam_(I))} {t_2*{t_2 <- `t_2*`}:Tlist(syntax valtype, grammar Tresult_(I))} {")"}} => (`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tfinal : final @@ -32691,12 +34766,12 @@ grammar Tsubtype_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, st : subtype, I' : I} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`})))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`})), $concat_idctxt(I'*{I' <- `I'*`})) + prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Taddrtype : addrtype @@ -32708,21 +34783,23 @@ grammar Taddrtype : addrtype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Tlimits : limits ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n} `%`_u64(n):Tu64 => `[%..%]`_limits(`%`_u64(n), ?()) + prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{n : n, m : m} {{`%`_u64(n):Tu64} {`%`_u64(m):Tu64}} => `[%..%]`_limits(`%`_u64(n), ?(`%`_u64(m))) + prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, I' : I, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') - -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, I' : I, `st*` : subtype*, i : n, `t_1*` : valtype*, `t_2*` : valtype*} {{"("} {"type"} {x:Ttypeidx_(I)} {")"}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{x : idx, `t_1*` : valtype*, `id?*` : char?*, `t_2*` : valtype*, I' : I} {{"("} {"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] = ?(SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), `%`_resulttype(t_2*{t_2 <- `t_2*`}))))) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`})))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) - -- Idctxt_ok: `|-%:OK`(I') + prod{x : idx, I' : I, `id?*` : char?*, `t_1*` : valtype*, `t_2*` : valtype*, `st*` : subtype*, i : n} {{"("} {"type"} {x:Ttypeidx_(I)} {")"} {(t_1, ?(`%`_name(lift(id?{id <- `id?`}),)))*{`id?` <- `id?*`, t_1 <- `t_1*`}:Tparam_(I)*{}} {t_2*{t_2 <- `t_2*`}:Tresult_(I)*{}}} => (x, I') + -- if (I.TYPEDEFS_I[x!`%`_idx.0] = ?(_DEF_deftype(REC_rectype(`%`_list(st*{st <- `st*`},)), i))) + -- if (st*{st <- `st*`}[i] = SUB_subtype(?(FINAL_final), [], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)))) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) + -- Idctxt_ok: `|-%:OK`(I',) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype @@ -32749,15 +34826,15 @@ grammar Ttabletype_(I : I) : tabletype ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, jt : tagtype} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, gt : globaltype} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, tt : tabletype} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{tt : tabletype, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {")"}} => (TABLE_externtype(tt), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec - prod{`id?` : char?, x : idx, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + prod{x : idx, `id?` : char?, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I'):Ttypeuse_(I)} {")"}} => (FUNC_externtype(_IDX_typeuse(x)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) @@ -32776,7 +34853,7 @@ grammar Tblocktype_(I : I) : blocktype prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch @@ -32789,26 +34866,33 @@ grammar Tcatch_(I : I) : catch ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +grammar Tfoldedinstr_(I : I) : instr* + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tlaneidx : laneidx ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec -grammar Talign_(N : N) : u64 +grammar Talign_(N : N) : u32 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{m : m, n : n} {{"align="} {`%`_u64(m):Tu64}} => `%`_u64(m) + prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u32(N,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Toffset : u64 ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n} {{"offset="} {`%`_u64(n):Tu64}} => `%`_u64(n) + prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod eps => `%`_u64(0,) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{n : n, m : m} {{`%`_u64(n):Toffset} {`%`_u64(m):Talign_(N)}} => {ALIGN `%`_u32(n), OFFSET `%`_u32(m)} + prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr @@ -32819,7 +34903,7 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "drop" => DROP_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`t?` : valtype?} {{"select"} {t?{t <- `t?`}:Tresult_(I)?{}}} => SELECT_instr(?(lift(t?{t <- `t?`}))) + prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -32840,7 +34924,7 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "return" => RETURN_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -32849,37 +34933,37 @@ grammar Tplaininstr_(I : I) : instr prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([]))*{}, LABELS [], FIELDS [], TYPEDEFS []}) + -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => LOCAL.GET_instr(x) + prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => LOCAL.SET_instr(x) + prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => LOCAL.TEE_instr(x) + prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => GLOBAL.GET_instr(x) + prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => GLOBAL.SET_instr(x) + prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => TABLE.GET_instr(x) + prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => TABLE.SET_instr(x) + prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => TABLE.SIZE_instr(x) + prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => TABLE.GROW_instr(x) + prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => TABLE.FILL_instr(x) + prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => TABLE.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => TABLE.INIT_instr(x, y) + prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => ELEM.DROP_instr(x) + prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -32889,59 +34973,59 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32), U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8), 8, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16), 4, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, S_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32), 2, U_sx)), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64))), x, ao) + prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -32951,101 +35035,101 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32))), x, ao) + prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64), x, ao, i) + prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => MEMORY.SIZE_instr(x) + prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => MEMORY.GROW_instr(x) + prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => MEMORY.FILL_instr(x) + prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => MEMORY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => MEMORY.INIT_instr(x, y) + prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => DATA.DROP_instr(x) + prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => REF.NULL_instr(ht) + prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => REF.FUNC_instr(x) + prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.is_null" => REF.IS_NULL_instr + prod "ref.is_null" => `REF.IS_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.as_non_null" => REF.AS_NON_NULL_instr + prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.eq" => REF.EQ_instr + prod "ref.eq" => `REF.EQ`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => REF.TEST_instr(rt) + prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => REF.CAST_instr(rt) + prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "ref.i31" => REF.I31_instr + prod "ref.i31" => `REF.I31`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_s" => I31.GET_instr(S_sx) + prod "i31.get_s" => `I31.GET`_instr(S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i31.get_u" => I31.GET_instr(U_sx) + prod "i31.get_u" => `I31.GET`_instr(U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => STRUCT.NEW_instr(x) + prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => STRUCT.NEW_DEFAULT_instr(x) + prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(), x, i) + prod{x : idx, i : fieldidx} {{"struct.get"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(S_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_s"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(S_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.GET_instr(?(U_sx), x, i) + prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => STRUCT.SET_instr(x, i) + prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => ARRAY.NEW_instr(x) + prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => ARRAY.NEW_DEFAULT_instr(x) + prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n):Tu32}} => ARRAY.NEW_FIXED_instr(x, `%`_u32(n)) + prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.NEW_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.NEW_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(), x) + prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(S_sx), x) + prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => ARRAY.GET_instr(?(U_sx), x) + prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => ARRAY.SET_instr(x) + prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "array.len" => ARRAY.LEN_instr + prod "array.len" => `ARRAY.LEN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => ARRAY.FILL_instr(x) + prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => ARRAY.COPY_instr(x_1, x_2) + prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => ARRAY.INIT_DATA_instr(x, y) + prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => ARRAY.INIT_ELEM_instr(x, y) + prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "any.convert_extern" => ANY.CONVERT_EXTERN_instr + prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "extern.convert_any" => EXTERN.CONVERT_ANY_instr + prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -33129,9 +35213,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -33139,11 +35223,11 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8))) + prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16))) + prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32))) + prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -33279,9 +35363,9 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_s" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(S_sx)) + prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.extend_i64_u" => CVTOP_instr(I64_numtype, I64_numtype, EXTEND_cvtop__(U_sx)) + prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -33347,205 +35431,205 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), i*{i <- `i*`}) + prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SWIZZLE_vswizzlop_) + prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16))), RELAXED_SWIZZLE_vswizzlop_) + prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16))) + prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8))) + prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4))) + prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2))) + prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4))) + prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2))) + prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_s"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.extract_lane_u"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.extract_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ?(), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i8x16.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i16x8.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"i64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f32x4.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod{l : labelidx} {{"f64x2.replace_lane"} {`%`_laneidx(l!`%`_labelidx.0):Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%`_laneidx(l!`%`_labelidx.0)) + prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ALL_TRUE_vtestop_) + prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ALL_TRUE_vtestop_) + prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ALL_TRUE_vtestop_) + prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ALL_TRUE_vtestop_) + prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), EQ_vrelop_) + prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NE_vrelop_) + prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(S_sx)) + prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LT_vrelop_(U_sx)) + prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(S_sx)) + prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GT_vrelop_(U_sx)) + prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(S_sx)) + prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), LE_vrelop_(U_sx)) + prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(S_sx)) + prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), GE_vrelop_(U_sx)) + prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), EQ_vrelop_) + prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NE_vrelop_) + prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(S_sx)) + prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LT_vrelop_(U_sx)) + prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(S_sx)) + prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GT_vrelop_(U_sx)) + prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(S_sx)) + prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), LE_vrelop_(U_sx)) + prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(S_sx)) + prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), GE_vrelop_(U_sx)) + prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(S_sx)) + prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LT_vrelop_(U_sx)) + prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(S_sx)) + prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GT_vrelop_(U_sx)) + prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(S_sx)) + prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), LE_vrelop_(U_sx)) + prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(S_sx)) + prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), GE_vrelop_(U_sx)) + prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LT_vrelop_(S_sx)) + prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GT_vrelop_(S_sx)) + prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), LE_vrelop_(S_sx)) + prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), GE_vrelop_(S_sx)) + prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), EQ_vrelop_) + prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NE_vrelop_) + prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LT_vrelop_) + prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GT_vrelop_) + prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), LE_vrelop_) + prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), GE_vrelop_) + prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), EQ_vrelop_) + prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NE_vrelop_) + prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LT_vrelop_) + prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GT_vrelop_) + prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), LE_vrelop_) + prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), GE_vrelop_) + prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ABS_vunop_) + prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), NEG_vunop_) + prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), POPCNT_vunop_) + prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ABS_vunop_) + prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), NEG_vunop_) + prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ABS_vunop_) + prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEG_vunop_) + prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SQRT_vunop_) + prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), CEIL_vunop_) + prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), FLOOR_vunop_) + prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_vunop_) + prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), NEAREST_vunop_) + prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ABS_vunop_) + prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEG_vunop_) + prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SQRT_vunop_) + prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), CEIL_vunop_) + prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), FLOOR_vunop_) + prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_vunop_) + prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), NEAREST_vunop_) + prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec @@ -33555,259 +35639,263 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_vbinop_) + prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(S_sx)) + prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), ADD_SAT_vbinop_(U_sx)) + prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_vbinop_) + prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(S_sx)) + prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), SUB_SAT_vbinop_(U_sx)) + prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(S_sx)) + prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MIN_vbinop_(U_sx)) + prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(S_sx)) + prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), MAX_vbinop_(U_sx)) + prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), `AVGRU`_vbinop_) + prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_vbinop_) + prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(S_sx)) + prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), ADD_SAT_vbinop_(U_sx)) + prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_vbinop_) + prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(S_sx)) + prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), SUB_SAT_vbinop_(U_sx)) + prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MUL_vbinop_) + prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(S_sx)) + prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MIN_vbinop_(U_sx)) + prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(S_sx)) + prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), MAX_vbinop_(U_sx)) + prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `AVGRU`_vbinop_) + prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `Q15MULR_SATS`_vbinop_) + prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `RELAXED_Q15MULRS`_vbinop_) + prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(S_sx)) + prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MIN_vbinop_(U_sx)) + prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(S_sx)) + prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), MAX_vbinop_(U_sx)) + prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), ADD_vbinop_) + prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), SUB_vbinop_) + prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MUL_vbinop_) + prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), DIV_vbinop_) + prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MIN_vbinop_) + prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), MAX_vbinop_) + prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMIN_vbinop_) + prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), PMAX_vbinop_) + prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MIN_vbinop_) + prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MAX_vbinop_) + prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), ADD_vbinop_) + prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), SUB_vbinop_) + prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MUL_vbinop_) + prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), DIV_vbinop_) + prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MIN_vbinop_) + prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), MAX_vbinop_) + prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMIN_vbinop_) + prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), PMAX_vbinop_) + prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MIN_vbinop_) + prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MAX_vbinop_) + prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16)), RELAXED_LANESELECT_vternop_) + prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), RELAXED_LANESELECT_vternop_) + prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), RELAXED_LANESELECT_vternop_) + prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), RELAXED_LANESELECT_vternop_) + prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_MADD_vternop_) + prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_NMADD_vternop_) + prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_MADD_vternop_) + prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_NMADD_vternop_) + prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHL_vshiftop_) + prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(S_sx)) + prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), SHR_vshiftop_(U_sx)) + prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHL_vshiftop_) + prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(S_sx)) + prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), SHR_vshiftop_(U_sx)) + prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHL_vshiftop_) + prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(S_sx)) + prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), SHR_vshiftop_(U_sx)) + prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHL_vshiftop_) + prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(S_sx)) + prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), SHR_vshiftop_(U_sx)) + prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16)))) + prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8)))) + prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4)))) + prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2)))) + prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), S_sx) + prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), U_sx) + prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), S_sx) + prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), U_sx) + prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8)), `%X%`_shape(I8_lanetype, `%`_dim(16)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(I16_lanetype, `%`_dim(8)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(S_sx, ?())) + prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), TRUNC_SAT_vcvtop__(U_sx, ?())) + prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F32_lanetype, `%`_dim(4)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) + prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) + prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, S_sx)) + prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(LOW_half, U_sx)) + prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, S_sx)) + prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), EXTEND_vcvtop__(HIGH_half, U_sx)) + prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(F64_lanetype, `%`_dim(2)), DEMOTE_vcvtop__(ZERO_zero)) + prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), S_sx)) + prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(), U_sx)) + prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(F32_lanetype, `%`_dim(4)), `PROMOTELOW`_vcvtop__) + prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), S_sx)) + prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2)), `%X%`_shape(I32_lanetype, `%`_dim(4)), CONVERT_vcvtop__(?(LOW_half), U_sx)) + prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(S_sx)) + prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTADD_PAIRWISE_vextunop__(U_sx)) + prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8))), `DOTS`_vextbinop__) + prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, S_sx)) + prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(LOW_half, U_sx)) + prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, S_sx)) + prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2))), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4))), EXTMUL_vextbinop__(HIGH_half, U_sx)) + prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec rec { @@ -33826,32 +35914,19 @@ grammar Tinstrs_(I : I) : instr* ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:31.1-41.24 -grammar Tfoldedinstr_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:28.5-28.59 - prod{in : instr, `in'*` : instr*} {{"("} {in:Tplaininstr_(I)} {in'*{in' <- `in'*`}:Tinstrs_(I)} {")"}} => in'*{in' <- `in'*`} ++ [in] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:32.5-33.17 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [BLOCK_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:34.5-35.16 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*} {{"("} {"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [LOOP_instr(bt, in*{in <- `in*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:36.5-39.33 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `in_1*` : instr*, `in_2*` : instr*} {{"("} {"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"("} {"then"} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {")"} {{{"("} {"else"} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {")"}}?{}} {")"}} => in*{in <- `in*`} ++ [`IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`})] - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:40.5-41.24 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*} {{"("} {"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {")"}} => [TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`})] - -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:75.1-77.65 +;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:61.5-63.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:64.5-66.35 - prod{`id?` : char?, I' : I, bt : blocktype, `in*` : instr*, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:67.5-69.71 - prod{`id?` : char?, I' : I, bt : blocktype, `in_1*` : instr*, `id_1?` : char?, `in_2*` : instr*, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}))):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}))):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:70.5-72.35 - prod{`id?` : char?, I' : I, bt : blocktype, `c*` : catch*, `in*` : instr*, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}))), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}))):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`}), in*{in <- `in*`}) + ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } @@ -33860,388 +35935,207 @@ grammar Texpr_(I : I) : expr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{qt : rectype, I' : I, I'' : I, st : subtype, n : n} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') - -- if (qt = REC_rectype(`%`_list(st^n{}))) - -- if (((n = 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS [?(st)]})) \/ ((n =/= 1) /\ (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?()^n{}}))) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') + -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) + -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`})))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, gt : globaltype, e : expr} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`})))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, mt : memtype} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`})))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, tt : tabletype, e : expr} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`})))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, t : valtype} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`})))], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, x : idx, I_1 : I, `loc**` : local**, `I_2*` : I*, e : expr, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`})))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_memidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Toffset_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Toffsetexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, `b*` : byte*, x : idx, e : expr} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {b*{b <- `b*`}:Tdatastring} {x:Tmemuse_(I)} {e:Toffset_(I)} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`})))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemexpr_(I : I) : expr + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Texpr_(I))}} => (rt, e*{e <- `e*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod eps => `%`_tableidx(0) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*, x : idx, e' : expr} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {x:Ttableuse_(I)} {e':Toffset_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`id?` : char?, rt : reftype, `e*` : expr*} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}))):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`})))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemorydots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttag_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportglobal_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportmemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texporttable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Texportfunc_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Tdatamemory_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -grammar Telemtable_(I : I) : () - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -syntax decl = - | TYPE{rectype : rectype}(rectype : rectype) - | IMPORT{name : name, externtype : externtype}(name : name, name, externtype : externtype) - | TAG{tagtype : tagtype}(tagtype : tagtype) - | GLOBAL{globaltype : globaltype, expr : expr}(globaltype : globaltype, expr : expr) - | MEMORY{memtype : memtype}(memtype : memtype) - | TABLE{tabletype : tabletype, expr : expr}(tabletype : tabletype, expr : expr) - | FUNC{typeidx : typeidx, `local*` : local*, expr : expr}(typeidx : typeidx, local*{local <- `local*`} : local*, expr : expr) - | DATA{`byte*` : byte*, datamode : datamode}(byte*{byte <- `byte*`} : byte*, datamode : datamode) - | ELEM{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(reftype : reftype, expr*{expr <- `expr*`} : expr*, elemmode : elemmode) - | START{funcidx : funcidx}(funcidx : funcidx) - | EXPORT{name : name, externidx : externidx}(name : name, externidx : externidx) - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:226.1-226.76 -def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:238.1-238.23 - def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:239.1-239.48 - def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:240.1-240.57 - def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:227.1-227.78 -def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:242.1-242.25 - def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:243.1-243.56 - def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:244.1-244.61 - def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:228.1-228.75 -def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:246.1-246.22 - def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:247.1-247.44 - def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:248.1-248.55 - def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { - -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:229.1-229.78 -def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:250.1-250.25 - def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:251.1-251.56 - def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:252.1-252.61 - def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timport_(I : I) : (import, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:230.1-230.75 -def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:254.1-254.22 - def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:255.1-255.44 - def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:256.1-256.55 - def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texport_(I : I) : (export, idctxt) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:231.1-231.77 -def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:258.1-258.24 - def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:259.1-259.52 - def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:260.1-260.59 - def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Timportdots : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttagdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:232.1-232.76 -def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:262.1-262.23 - def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:263.1-263.48 - def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:264.1-264.57 - def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobaldots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmemdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:233.1-233.76 -def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:266.1-266.23 - def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:267.1-267.48 - def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:268.1-268.57 - def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttabledots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfuncdots_(I : I) : () + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:234.1-234.76 -def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:270.1-270.23 - def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:271.1-271.48 - def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:272.1-272.57 - def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:235.1-235.77 -def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:274.1-274.24 - def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:275.1-275.52 - def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:276.1-276.59 - def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -rec { +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:236.1-236.78 -def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:278.1-278.25 - def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:279.1-279.56 - def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec:280.1-280.61 - def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) - -- otherwise -} +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec -def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered([]) = true - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl'*` : decl*}(decl'*{decl' <- `decl'*`}) = ($importsd(decl'*{decl' <- `decl'*`}) = []) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Telemtable_(I : I) : () + +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.3-text.modules.spectec - prod{`decl*` : decl*, `I*` : I*, I' : I, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(type*{type <- `type*`}, import*{import <- `import*`}, tag*{tag <- `tag*`}, global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, func*{func <- `func*`}, data*{data <- `data*`}, elem*{elem <- `elem*`}, start?{start <- `start?`}, export*{export <- `export*`}) + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) - -- Idctxt_ok: `|-%:OK`(I') + -- Idctxt_ok: `|-%:OK`(I',) -- if (type*{type <- `type*`} = $typesd(decl*{decl <- `decl*`})) -- if (import*{import <- `import*`} = $importsd(decl*{decl <- `decl*`})) -- if (tag*{tag <- `tag*`} = $tagsd(decl*{decl <- `decl*`})) @@ -34255,134 +36149,15 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax A = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax B = nat - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax sym = - | _FIRST{A_1 : A}(A_1 : A) - | _DOTS - | _LAST{A_n : A}(A_n : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax symsplit = - | _FIRST{A_1 : A}(A_1 : A) - | _LAST{A_2 : A}(A_2 : A) - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax recorddots = () - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax record = -{ - FIELD_1{A_1 : A} A, - FIELD_2{A_2 : A} A, - `...`{recorddots : recorddots} recorddots -} - -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec -syntax pth = - | PTHSYNTAX - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -syntax T = nat - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremise: `%`(nat) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingPremisedots: `...` - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -relation NotationTypingScheme: `%`(nat) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec - rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: - `%`(conclusion) - -- NotationTypingPremise: `%`(premise_1) - -- NotationTypingPremise: `%`(premise_2) - -- NotationTypingPremisedots: `...` - -- NotationTypingPremise: `%`(premise_n) - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 -relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 - rule i32.add{C : context}: - `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype]), [], `%`_resulttype([I32_valtype]))) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 - rule global.get{C : context, x : idx, t : valtype, mut : mut}: - `%|-%:%`(C, [GLOBAL.GET_instr(x)], `%->_%%`_instrtype(`%`_resulttype([]), [], `%`_resulttype([t]))) - -- if (x!`%`_idx.0 < |C.GLOBALS_context|) - -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 - rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: - `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) - -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], RECS [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`})], RETURN ?(), REFS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`}), [], `%`_resulttype(t_2*{t_2 <- `t_2*`}))) -} - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -relation NotationReduct: `~>%`(instr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)]) - - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec - rule 4{q_6 : num_(F64_numtype)}: - `~>%`([CONST_instr(F64_numtype, q_6)]) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $instrdots : instr* - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax label = - | `LABEL_%{%}`{n : n, `instr*` : instr*}(n : n, instr*{instr <- `instr*`} : instr*) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -syntax callframe = - | `FRAME_%{%}`{n : n, frame : frame}(n : n, frame : frame) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec -rec { - -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 -def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 - def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 - def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) - -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) - -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) -} - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -syntax symdots = - | `%`{i : nat}(i : nat) - -- if (i = 0) - -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec -def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - def $var{syntax X}(syntax X) = 0 +;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +grammar Tdecldots_(I : I) : (decl, idctxt)* + ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsym : A @@ -34394,14 +36169,14 @@ grammar Bsym : A ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec grammar Bsymsplit : () ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec - prod{`` : ()} ``:Bvar(syntax B) => `` + prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tvar(syntax X) : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod 0x00 => () + prod 0x00 => ((), ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsym : A @@ -34413,18 +36188,9 @@ grammar Tsym : A ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tsymsplit : () ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec - prod{`` : ()} ``:Tvar(syntax B) => `` - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax abbreviated = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax expanded = () - -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec -syntax syntax = () + prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec grammar Tabbrev : () @@ -34449,6 +36215,45 @@ relation TestNestedIter: `%|-%`(nat***, nat**) `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} +;; test.spectec +syntax side = + | Side(nat : nat,) + -- if (nat < 10) + +;; test.spectec +def $side(side : side) : side + ;; test.spectec + def $side{s : side}(s) = s + +;; test.spectec +def $sidef(nat : nat) : bool + ;; test.spectec + def $sidef{n : nat}(n) = true + -- if ($side(Side_side(n,)) = $side(Side_side(n,))) + ;; test.spectec + def $sidef{n : nat}(n) = false + -- otherwise + +;; test.spectec +syntax Bool(bool : bool) + ;; test.spectec + syntax Bool(true) = nat + + + ;; test.spectec + syntax Bool(false) = text + + +;; test.spectec +def $testtrue(Bool : Bool($sidef(1))) : Bool(true) + ;; test.spectec + def $testtrue{b : Bool($sidef(1))}(b) = b + +;; test.spectec +def $testfalse(Bool : Bool($sidef(11))) : Bool(false) + ;; test.spectec + def $testfalse{b : Bool($sidef(11))}(b) = b + == IL Validation... == Running pass totalize... @@ -34462,6 +36267,45 @@ relation TestNestedIter: `%|-%`(nat***, nat**) `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} +;; test.spectec +syntax side = + | Side(nat : nat,) + -- if (nat < 10) + +;; test.spectec +def $side(side : side) : side + ;; test.spectec + def $side{s : side}(s) = s + +;; test.spectec +def $sidef(nat : nat) : bool + ;; test.spectec + def $sidef{n : nat}(n) = true + -- if ($side(Side_side(n,)) = $side(Side_side(n,))) + ;; test.spectec + def $sidef{n : nat}(n) = false + -- otherwise + +;; test.spectec +syntax Bool(bool : bool) + ;; test.spectec + syntax Bool(true) = nat + + + ;; test.spectec + syntax Bool(false) = text + + +;; test.spectec +def $testtrue(Bool : Bool($sidef(1))) : Bool(true) + ;; test.spectec + def $testtrue{b : Bool($sidef(1))}(b) = b + +;; test.spectec +def $testfalse(Bool : Bool($sidef(11))) : Bool(false) + ;; test.spectec + def $testfalse{b : Bool($sidef(11))}(b) = b + == IL Validation after pass totalize... == Running pass sideconditions... @@ -34474,9 +36318,49 @@ relation TestNestedIter: `%|-%`(nat***, nat**) rule _{`n***` : nat***, `m**` : nat**}: `%|-%`(n*{n <- `n*`}*{`n*` <- `n**`}+{`n**` <- `n***`}, m*{m <- `m*`}+{`m*` <- `m**`}) -- if (|`m**`| = |`n***`|) + -- if (`m**` =/= []) -- (if (|`m*`| = |`n**`|))+{`m*` <- `m**`, `n**` <- `n***`} -- (if (|n*{n <- `n*`}| = m))*{m <- `m*`, `n*` <- `n**`}+{`m*` <- `m**`, `n**` <- `n***`} +;; test.spectec +syntax side = + | Side(nat : nat,) + -- if (nat < 10) + +;; test.spectec +def $side(side : side) : side + ;; test.spectec + def $side{s : side}(s) = s + +;; test.spectec +def $sidef(nat : nat) : bool + ;; test.spectec + def $sidef{n : nat}(n) = true + -- if ($side(Side_side(n,)) = $side(Side_side(n,))) + ;; test.spectec + def $sidef{n : nat}(n) = false + -- otherwise + +;; test.spectec +syntax Bool(bool : bool) + ;; test.spectec + syntax Bool(true) = nat + + + ;; test.spectec + syntax Bool(false) = text + + +;; test.spectec +def $testtrue(Bool : Bool($sidef(1))) : Bool(true) + ;; test.spectec + def $testtrue{b : Bool($sidef(1))}(b) = b + +;; test.spectec +def $testfalse(Bool : Bool($sidef(11))) : Bool(false) + ;; test.spectec + def $testfalse{b : Bool($sidef(11))}(b) = b + == IL Validation after pass sideconditions... == Complete. ``` diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 435f107964..39517ee1b2 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -9,8 +9,6 @@ $ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec -l - == IL Validation after pass sideconditions... == Translating to AL... == Prose Generation... -Untranslated relation Expand: `%~~%`(deftype, comptype) -Untranslated relation Expand_use: `%~~_%%`(typeuse, context, comptype) == Splicing... \documentclass[a4paper]{scrartcl} @@ -108,13 +106,13 @@ C \vdash \epsilon : \epsilon \rightarrow \epsilon } \qquad \frac{ -C \vdash {\mathit{instr}}_1 : {t_1^\ast} \rightarrow_{{x_1^\ast}} {t_2^\ast} +C \vdash {{\mathit{instr}}_1^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}} {t_2^\ast} \qquad (C{.}\mathsf{locals}{}[x_1] = {\mathit{init}}~t)^\ast \qquad C{}[{.}\mathsf{local}{}[{x_1^\ast}] = {(\mathsf{set}~t)^\ast}] \vdash {{\mathit{instr}}_2^\ast} : {t_2^\ast} \rightarrow_{{x_2^\ast}} {t_3^\ast} }{ -C \vdash {\mathit{instr}}_1~{{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}~{x_2^\ast}} {t_3^\ast} +C \vdash {{\mathit{instr}}_1^\ast}~{{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_1^\ast}~{x_2^\ast}} {t_3^\ast} } \\[3ex]\displaystyle \frac{ @@ -189,7 +187,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_2^\ast}) \} \oplus C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} }{ C \vdash \mathsf{block}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}block}]} +} \, {[\textsc{\scriptsize T{-}instr{-}block}]} \qquad \end{array} $$ @@ -202,7 +200,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_1^\ast}) \} \oplus C \vdash {{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow_{{x^\ast}} {t_2^\ast} }{ C \vdash \mathsf{loop}~{\mathit{bt}}~{{\mathit{instr}}^\ast} : {t_1^\ast} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}loop}]} +} \, {[\textsc{\scriptsize T{-}instr{-}loop}]} \qquad \end{array} $$ @@ -217,7 +215,7 @@ C \vdash {\mathit{bt}} : {t_1^\ast} \rightarrow {t_2^\ast} \{ \mathsf{labels}~({t_2^\ast}) \} \oplus C \vdash {{\mathit{instr}}_2^\ast} : {t_1^\ast} \rightarrow_{{x_2^\ast}} {t_2^\ast} }{ C \vdash \mathsf{if}~{\mathit{bt}}~{{\mathit{instr}}_1^\ast}~\mathsf{else}~{{\mathit{instr}}_2^\ast} : {t_1^\ast}~\mathsf{i{\scriptstyle 32}} \rightarrow {t_2^\ast} -} \, {[\textsc{\scriptsize T{-}if}]} +} \, {[\textsc{\scriptsize T{-}instr{-}if}]} \qquad \end{array} $$ @@ -233,7 +231,7 @@ $$ {{\mathrm{default}}}_{{\mathsf{i}}{N}} & = & ({\mathsf{i}}{N}{.}\mathsf{const}~0) \\ {{\mathrm{default}}}_{{\mathsf{f}}{N}} & = & ({\mathsf{f}}{N}{.}\mathsf{const}~{+0}) \\ {{\mathrm{default}}}_{{\mathsf{v}}{N}} & = & ({\mathsf{v}}{N}{.}\mathsf{const}~0) \\ -{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & (\mathsf{ref{.}null}~{\mathit{ht}}) \\ +{{\mathrm{default}}}_{\mathsf{ref}~\mathsf{null}~{\mathit{ht}}} & = & \mathsf{ref{.}null} \\ {{\mathrm{default}}}_{\mathsf{ref}~{\mathit{ht}}} & = & \epsilon \\ \end{array} $$ @@ -241,8 +239,8 @@ $$ $$ \begin{array}[t]{@{}lcl@{}l@{}} (s ; f){.}\mathsf{funcs} & = & s{.}\mathsf{funcs} \\[0.8ex] -(s ; f){.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ -(s ; f){.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ +z{.}\mathsf{funcs}{}[x] & = & s{.}\mathsf{funcs}{}[f{.}\mathsf{module}{.}\mathsf{funcs}{}[x]] \\ +z{.}\mathsf{tables}{}[x] & = & s{.}\mathsf{tables}{}[f{.}\mathsf{module}{.}\mathsf{tables}{}[x]] \\ \end{array} $$ @@ -296,7 +294,6 @@ warning: syntax `abbreviated` was never spliced warning: syntax `absheaptype/syn` was never spliced warning: syntax `absheaptype/sem` was never spliced warning: syntax `addr` was never spliced -warning: syntax `addrref` was never spliced warning: syntax `addrtype` was never spliced warning: syntax `arrayaddr` was never spliced warning: syntax `arrayinst` was never spliced @@ -314,7 +311,8 @@ warning: syntax `code` was never spliced warning: syntax `comptype` was never spliced warning: syntax `config` was never spliced warning: syntax `consttype` was never spliced -warning: syntax `context` was never spliced +warning: syntax `context/syn` was never spliced +warning: syntax `context/sem` was never spliced warning: syntax `cvtop__` was never spliced warning: syntax `cvtop__` was never spliced warning: syntax `cvtop__` was never spliced @@ -365,7 +363,11 @@ warning: syntax `globalinst` was never spliced warning: syntax `half` was never spliced warning: syntax `heaptype` was never spliced warning: syntax `hostaddr` was never spliced +warning: syntax `hostcallresult` was never spliced warning: syntax `hostfunc` was never spliced +warning: syntax `i128` was never spliced +warning: syntax `i32` was never spliced +warning: syntax `i64` was never spliced warning: syntax `iN` was never spliced warning: syntax `idctxt` was never spliced warning: syntax `idx` was never spliced @@ -424,7 +426,7 @@ warning: syntax `num_` was never spliced warning: syntax `num_` was never spliced warning: syntax `numtype` was never spliced warning: syntax `oktypeidx` was never spliced -warning: syntax `oktypeidxnat` was never spliced +warning: syntax `oktypenat` was never spliced warning: syntax `pack_` was never spliced warning: syntax `packtype` was never spliced warning: syntax `packval` was never spliced @@ -474,7 +476,6 @@ warning: syntax `typeidx` was never spliced warning: syntax `typeuse/syn` was never spliced warning: syntax `typeuse/sem` was never spliced warning: syntax `typevar` was never spliced -warning: syntax `u128` was never spliced warning: syntax `u16` was never spliced warning: syntax `u31` was never spliced warning: syntax `u32` was never spliced @@ -543,6 +544,7 @@ warning: grammar `Bexterntype` was never spliced warning: grammar `Bf32` was never spliced warning: grammar `Bf64` was never spliced warning: grammar `BfN` was never spliced +warning: grammar `Bfieldidx` was never spliced warning: grammar `Bfieldtype` was never spliced warning: grammar `Bfunc` was never spliced warning: grammar `Bfuncidx` was never spliced @@ -552,6 +554,8 @@ warning: grammar `Bglobalidx` was never spliced warning: grammar `Bglobalsec` was never spliced warning: grammar `Bglobaltype` was never spliced warning: grammar `Bheaptype` was never spliced +warning: grammar `Bi32` was never spliced +warning: grammar `Bi64` was never spliced warning: grammar `BiN` was never spliced warning: grammar `Bimport` was never spliced warning: grammar `Bimportsec` was never spliced @@ -565,7 +569,6 @@ warning: grammar `Binstr/memory` was never spliced warning: grammar `Binstr/ref` was never spliced warning: grammar `Binstr/struct` was never spliced warning: grammar `Binstr/array` was never spliced -warning: grammar `Binstr/cast` was never spliced warning: grammar `Binstr/extern` was never spliced warning: grammar `Binstr/i31` was never spliced warning: grammar `Binstr/num-const` was never spliced @@ -698,7 +701,7 @@ warning: grammar `Tannot` was never spliced warning: grammar `Tannotid` was never spliced warning: grammar `Tblockchar` was never spliced warning: grammar `Tblockcomment` was never spliced -warning: grammar `Tblockinstr_` was never spliced +warning: grammar `Tblockinstr_/plain` was never spliced warning: grammar `Tblockinstr_/abbrev` was never spliced warning: grammar `Tblocktype_` was never spliced warning: grammar `Tcatch_` was never spliced @@ -707,15 +710,17 @@ warning: grammar `Tcomment` was never spliced warning: grammar `Tcomptype_` was never spliced warning: grammar `Tdata_` was never spliced warning: grammar `Tdataidx_` was never spliced -warning: grammar `Tdatamemory_/abbrev` was never spliced +warning: grammar `Tdatamem_/abbrev` was never spliced warning: grammar `Tdatastring` was never spliced warning: grammar `Tdecl_` was never spliced +warning: grammar `Tdecldots_` was never spliced warning: grammar `Tdigit` was never spliced -warning: grammar `Telem_` was never spliced -warning: grammar `Telemexpr_` was never spliced +warning: grammar `Telem_/plain` was never spliced +warning: grammar `Telem_/abbrev` was never spliced +warning: grammar `Telemexpr_/plain` was never spliced warning: grammar `Telemexpr_/abbrev` was never spliced warning: grammar `Telemidx_` was never spliced -warning: grammar `Telemlist_` was never spliced +warning: grammar `Telemlist_/plain` was never spliced warning: grammar `Telemlist_/abbrev` was never spliced warning: grammar `Telemtable_/abbrev` was never spliced warning: grammar `Teof` was never spliced @@ -725,8 +730,8 @@ warning: grammar `Texportfunc_/abbrev` was never spliced warning: grammar `Texportfuncdots_` was never spliced warning: grammar `Texportglobal_/abbrev` was never spliced warning: grammar `Texportglobaldots_` was never spliced -warning: grammar `Texportmemory_/abbrev` was never spliced -warning: grammar `Texportmemorydots_` was never spliced +warning: grammar `Texportmem_/abbrev` was never spliced +warning: grammar `Texportmemdots_` was never spliced warning: grammar `Texporttable_/abbrev` was never spliced warning: grammar `Texporttabledots_` was never spliced warning: grammar `Texporttag_/abbrev` was never spliced @@ -760,7 +765,6 @@ warning: grammar `Thexfloat` was never spliced warning: grammar `Thexfrac` was never spliced warning: grammar `Thexmant` was never spliced warning: grammar `Thexnum` was never spliced -warning: grammar `Ti128` was never spliced warning: grammar `Ti16` was never spliced warning: grammar `Ti32` was never spliced warning: grammar `Ti64` was never spliced @@ -769,11 +773,15 @@ warning: grammar `TiN` was never spliced warning: grammar `Tid` was never spliced warning: grammar `Tidchar` was never spliced warning: grammar `Tidx_` was never spliced -warning: grammar `Timport_` was never spliced -warning: grammar `Timport_/abbrev` was never spliced +warning: grammar `Timport_/plain` was never spliced +warning: grammar `Timport_/abbrev-tag` was never spliced +warning: grammar `Timport_/abbrev-global` was never spliced +warning: grammar `Timport_/abbrev-mem` was never spliced +warning: grammar `Timport_/abbrev-table` was never spliced +warning: grammar `Timport_/abbrev-func` was never spliced warning: grammar `Timportdots` was never spliced warning: grammar `Tinstr_` was never spliced -warning: grammar `Tinstrs_` was never spliced +warning: grammar `Tinstrs_/unfolded` was never spliced warning: grammar `Tinstrs_/folded` was never spliced warning: grammar `Tkeyword` was never spliced warning: grammar `Tlabel_` was never spliced @@ -783,7 +791,7 @@ warning: grammar `Tlimits` was never spliced warning: grammar `Tlinechar` was never spliced warning: grammar `Tlinecomment` was never spliced warning: grammar `Tlist` was never spliced -warning: grammar `Tlocal_` was never spliced +warning: grammar `Tlocal_/plain` was never spliced warning: grammar `Tlocal_/abbrev` was never spliced warning: grammar `Tlocalidx_` was never spliced warning: grammar `Tmant` was never spliced @@ -791,9 +799,9 @@ warning: grammar `Tmem_` was never spliced warning: grammar `Tmemarg_` was never spliced warning: grammar `Tmemidx_` was never spliced warning: grammar `Tmemtype_` was never spliced -warning: grammar `Tmemuse_` was never spliced +warning: grammar `Tmemuse_/plain` was never spliced warning: grammar `Tmemuse_/abbrev` was never spliced -warning: grammar `Tmodule` was never spliced +warning: grammar `Tmodule/plain` was never spliced warning: grammar `Tmodule/abbrev` was never spliced warning: grammar `Tname` was never spliced warning: grammar `Tnewline` was never spliced @@ -801,23 +809,23 @@ warning: grammar `Tnull` was never spliced warning: grammar `Tnum` was never spliced warning: grammar `Tnumtype` was never spliced warning: grammar `Toffset` was never spliced -warning: grammar `Toffset_` was never spliced -warning: grammar `Toffset_/abbrev` was never spliced +warning: grammar `Toffsetexpr_/plain` was never spliced +warning: grammar `Toffsetexpr_/abbrev` was never spliced warning: grammar `Tpacktype` was never spliced warning: grammar `Tparam_/base` was never spliced warning: grammar `Tparam_/abbrev` was never spliced warning: grammar `Tplaininstr_/parametric` was never spliced warning: grammar `Tplaininstr_/br` was never spliced -warning: grammar `Tplaininstr_/func` was never spliced -warning: grammar `Tplaininstr_/func/abbrev` was never spliced +warning: grammar `Tplaininstr_/func-plain` was never spliced +warning: grammar `Tplaininstr_/func-abbrev` was never spliced warning: grammar `Tplaininstr_/exn` was never spliced warning: grammar `Tplaininstr_/local` was never spliced warning: grammar `Tplaininstr_/global` was never spliced -warning: grammar `Tplaininstr_/table` was never spliced -warning: grammar `Tplaininstr_/table/abbrev` was never spliced +warning: grammar `Tplaininstr_/table-plain` was never spliced +warning: grammar `Tplaininstr_/table-abbrev` was never spliced warning: grammar `Tplaininstr_/elem` was never spliced -warning: grammar `Tplaininstr_/memory` was never spliced -warning: grammar `Tplaininstr_/memory/abbrev` was never spliced +warning: grammar `Tplaininstr_/memory-plain` was never spliced +warning: grammar `Tplaininstr_/memory-abbrev` was never spliced warning: grammar `Tplaininstr_/data` was never spliced warning: grammar `Tplaininstr_/ref` was never spliced warning: grammar `Tplaininstr_/i31` was never spliced @@ -902,6 +910,7 @@ warning: grammar `Tplaininstr_/vec-extun-i32x4` was never spliced warning: grammar `Tplaininstr_/vec-extbin-i16x8` was never spliced warning: grammar `Tplaininstr_/vec-extbin-i32x4` was never spliced warning: grammar `Tplaininstr_/vec-extbin-i64x2` was never spliced +warning: grammar `Tplaininstr_/vec-exttern-i32x4` was never spliced warning: grammar `Trectype_/base` was never spliced warning: grammar `Trectype_/abbrev` was never spliced warning: grammar `Treftype_/base` was never spliced @@ -924,11 +933,11 @@ warning: grammar `Tsubtype_/abbrev` was never spliced warning: grammar `Tsym` was never spliced warning: grammar `Tsymsplit/1` was never spliced warning: grammar `Tsymsplit/2` was never spliced -warning: grammar `Ttable_` was never spliced +warning: grammar `Ttable_/plain` was never spliced warning: grammar `Ttable_/abbrev` was never spliced warning: grammar `Ttableidx_` was never spliced warning: grammar `Ttabletype_` was never spliced -warning: grammar `Ttableuse_` was never spliced +warning: grammar `Ttableuse_/plain` was never spliced warning: grammar `Ttableuse_/abbrev` was never spliced warning: grammar `Ttag_` was never spliced warning: grammar `Ttagidx_` was never spliced @@ -947,6 +956,7 @@ warning: grammar `TuNplain` was never spliced warning: grammar `Tvaltype_` was never spliced warning: grammar `Tvar` was never spliced warning: grammar `Tvectype` was never spliced +warning: rule `Arrayinst_ok` was never spliced warning: rule `Blocktype_ok/valtype` was never spliced warning: rule `Blocktype_ok/typeidx` was never spliced warning: rule `Catch_ok/catch` was never spliced @@ -959,7 +969,10 @@ warning: rule `Comptype_ok/func` was never spliced warning: rule `Comptype_sub/struct` was never spliced warning: rule `Comptype_sub/array` was never spliced warning: rule `Comptype_sub/func` was never spliced +warning: rule `Config_ok` was never spliced +warning: rule `Context_ok` was never spliced warning: rule `Data_ok` was never spliced +warning: rule `Datainst_ok` was never spliced warning: rule `Datamode_ok/passive` was never spliced warning: rule `Datamode_ok/active` was never spliced warning: rule `Defaultable` was never spliced @@ -967,17 +980,32 @@ warning: rule `Deftype_ok` was never spliced warning: rule `Deftype_sub/refl` was never spliced warning: rule `Deftype_sub/super` was never spliced warning: rule `Elem_ok` was never spliced +warning: rule `Eleminst_ok` was never spliced warning: rule `Elemmode_ok/passive` was never spliced warning: rule `Elemmode_ok/declare` was never spliced warning: rule `Elemmode_ok/active` was never spliced warning: rule `Eval_expr` was never spliced +warning: rule `Exninst_ok` was never spliced warning: rule `Expand` was never spliced warning: rule `Expand_use/deftype` was never spliced warning: rule `Expand_use/typeidx` was never spliced warning: rule `Export_ok` was never spliced +warning: rule `Exportinst_ok` was never spliced warning: rule `Expr_const` was never spliced warning: rule `Expr_ok` was never spliced +warning: rule `Expr_ok2` was never spliced warning: rule `Expr_ok_const` was never spliced +warning: rule `Extend_arrayinst` was never spliced +warning: rule `Extend_datainst` was never spliced +warning: rule `Extend_eleminst` was never spliced +warning: rule `Extend_exninst` was never spliced +warning: rule `Extend_funcinst` was never spliced +warning: rule `Extend_globalinst` was never spliced +warning: rule `Extend_meminst` was never spliced +warning: rule `Extend_store` was never spliced +warning: rule `Extend_structinst` was never spliced +warning: rule `Extend_tableinst` was never spliced +warning: rule `Extend_taginst` was never spliced warning: rule `Externaddr_ok/tag` was never spliced warning: rule `Externaddr_ok/global` was never spliced warning: rule `Externaddr_ok/mem` was never spliced @@ -1002,8 +1030,13 @@ warning: rule `Externtype_sub/func` was never spliced warning: rule `Fieldtype_ok` was never spliced warning: rule `Fieldtype_sub/const` was never spliced warning: rule `Fieldtype_sub/var` was never spliced +warning: rule `Fieldval_ok/val` was never spliced +warning: rule `Fieldval_ok/packval` was never spliced +warning: rule `Frame_ok` was never spliced warning: rule `Func_ok` was never spliced +warning: rule `Funcinst_ok` was never spliced warning: rule `Global_ok` was never spliced +warning: rule `Globalinst_ok` was never spliced warning: rule `Globals_ok/empty` was never spliced warning: rule `Globals_ok/cons` was never spliced warning: rule `Globaltype_ok` was never spliced @@ -1011,6 +1044,7 @@ warning: rule `Globaltype_sub/const` was never spliced warning: rule `Globaltype_sub/var` was never spliced warning: rule `Heaptype_ok/abs` was never spliced warning: rule `Heaptype_ok/typeuse` was never spliced +warning: rule `Heaptype_ok/bot` was never spliced warning: rule `Heaptype_sub/refl` was never spliced warning: rule `Heaptype_sub/trans` was never spliced warning: rule `Heaptype_sub/eq-any` was never spliced @@ -1023,13 +1057,21 @@ warning: rule `Heaptype_sub/func` was never spliced warning: rule `Heaptype_sub/def` was never spliced warning: rule `Heaptype_sub/typeidx-l` was never spliced warning: rule `Heaptype_sub/typeidx-r` was never spliced -warning: rule `Heaptype_sub/rec` was never spliced +warning: rule `Heaptype_sub/rec-struct` was never spliced +warning: rule `Heaptype_sub/rec-array` was never spliced +warning: rule `Heaptype_sub/rec-func` was never spliced +warning: rule `Heaptype_sub/rec-sub` was never spliced warning: rule `Heaptype_sub/none` was never spliced warning: rule `Heaptype_sub/nofunc` was never spliced warning: rule `Heaptype_sub/noexn` was never spliced warning: rule `Heaptype_sub/noextern` was never spliced warning: rule `Heaptype_sub/bot` was never spliced warning: rule `Idctxt_ok` was never spliced +warning: rule `ImmutReachable/trans` was never spliced +warning: rule `ImmutReachable/ref.struct` was never spliced +warning: rule `ImmutReachable/ref.array` was never spliced +warning: rule `ImmutReachable/ref.exn` was never spliced +warning: rule `ImmutReachable/ref.extern` was never spliced warning: rule `Import_ok` was never spliced warning: rule `Instr_const/const` was never spliced warning: rule `Instr_const/vconst` was never spliced @@ -1150,20 +1192,41 @@ warning: rule `Instr_ok/vextbinop` was never spliced warning: rule `Instr_ok/vextternop` was never spliced warning: rule `Instr_ok/vnarrow` was never spliced warning: rule `Instr_ok/vcvtop` was never spliced +warning: rule `Instr_ok2/plain` was never spliced +warning: rule `Instr_ok2/call_ref` was never spliced +warning: rule `Instr_ok2/return_call_ref` was never spliced +warning: rule `Instr_ok2/ref` was never spliced +warning: rule `Instr_ok2/label` was never spliced +warning: rule `Instr_ok2/frame` was never spliced +warning: rule `Instr_ok2/handler` was never spliced +warning: rule `Instr_ok2/trap` was never spliced warning: rule `Instrs_ok/empty` was spliced more than once +warning: rule `Instrs_ok/instr` was never spliced warning: rule `Instrs_ok/sub` was never spliced warning: rule `Instrs_ok/frame` was spliced more than once +warning: rule `Instrs_ok2/empty` was never spliced +warning: rule `Instrs_ok2/seq` was never spliced +warning: rule `Instrs_ok2/sub` was never spliced +warning: rule `Instrs_ok2/frame` was never spliced warning: rule `Instrtype_ok` was never spliced warning: rule `Instrtype_sub` was never spliced warning: rule `Limits_ok` was never spliced -warning: rule `Limits_sub` was never spliced +warning: rule `Limits_sub/max` was never spliced +warning: rule `Limits_sub/eps` was never spliced warning: rule `Local_ok/set` was never spliced warning: rule `Local_ok/unset` was never spliced +warning: rule `Localtype_ok` was never spliced +warning: rule `Localval_ok/set` was never spliced +warning: rule `Localval_ok/unset` was never spliced warning: rule `Mem_ok` was never spliced +warning: rule `Memarg_ok` was never spliced +warning: rule `Meminst_ok` was never spliced warning: rule `Memtype_ok` was never spliced warning: rule `Memtype_sub` was never spliced warning: rule `Module_ok` was never spliced +warning: rule `Moduleinst_ok` was never spliced warning: rule `Nondefaultable` was never spliced +warning: rule `NotImmutReachable` was never spliced warning: rule `NotationReduct/2` was never spliced warning: rule `NotationReduct/3` was never spliced warning: rule `NotationReduct/4` was never spliced @@ -1176,9 +1239,9 @@ warning: rule `Numtype_ok` was never spliced warning: rule `Numtype_sub` was never spliced warning: rule `Packtype_ok` was never spliced warning: rule `Packtype_sub` was never spliced +warning: rule `Packval_ok` was never spliced warning: rule `Rectype_ok/empty` was never spliced warning: rule `Rectype_ok/cons` was never spliced -warning: rule `Rectype_ok/_rec2` was never spliced warning: rule `Rectype_ok2/empty` was never spliced warning: rule `Rectype_ok2/cons` was never spliced warning: rule `Ref_ok/null` was never spliced @@ -1196,9 +1259,15 @@ warning: rule `Reftype_sub/null` was never spliced warning: rule `Resulttype_ok` was never spliced warning: rule `Resulttype_sub` was never spliced warning: rule `Start_ok` was never spliced +warning: rule `State_ok` was never spliced warning: rule `Step/ctxt-instrs` was never spliced warning: rule `Step/ctxt-label` was never spliced +warning: rule `Step/ctxt-handler` was never spliced warning: rule `Step/ctxt-frame` was never spliced +warning: rule `Step/call_ref-null` was never spliced +warning: rule `Step/call_ref-func` was never spliced +warning: rule `Step/call_ref-hostfunc-res` was never spliced +warning: rule `Step/call_ref-hostfunc-div` was never spliced warning: rule `Step/throw` was never spliced warning: rule `Step/local.set` was never spliced warning: rule `Step/global.set` was never spliced @@ -1253,6 +1322,7 @@ warning: rule `Step_pure/return-handler` was never spliced warning: rule `Step_pure/handler-vals` was never spliced warning: rule `Step_pure/trap-instrs` was never spliced warning: rule `Step_pure/trap-label` was never spliced +warning: rule `Step_pure/trap-handler` was never spliced warning: rule `Step_pure/trap-frame` was never spliced warning: rule `Step_pure/local.tee` was never spliced warning: rule `Step_pure/ref.i31` was never spliced @@ -1310,8 +1380,6 @@ warning: rule `Step_read/br_on_cast-fail` was never spliced warning: rule `Step_read/br_on_cast_fail-succeed` was never spliced warning: rule `Step_read/br_on_cast_fail-fail` was never spliced warning: rule `Step_read/call` was never spliced -warning: rule `Step_read/call_ref-null` was never spliced -warning: rule `Step_read/call_ref-func` was never spliced warning: rule `Step_read/return_call` was never spliced warning: rule `Step_read/return_call_ref-label` was never spliced warning: rule `Step_read/return_call_ref-handler` was never spliced @@ -1368,7 +1436,7 @@ warning: rule `Step_read/memory.copy-gt` was never spliced warning: rule `Step_read/memory.init-oob` was never spliced warning: rule `Step_read/memory.init-zero` was never spliced warning: rule `Step_read/memory.init-succ` was never spliced -warning: rule `Step_read/ref.null-idx` was never spliced +warning: rule `Step_read/ref.null` was never spliced warning: rule `Step_read/ref.func` was never spliced warning: rule `Step_read/ref.test-true` was never spliced warning: rule `Step_read/ref.test-false` was never spliced @@ -1414,12 +1482,16 @@ warning: rule `Storagetype_ok/val` was never spliced warning: rule `Storagetype_ok/pack` was never spliced warning: rule `Storagetype_sub/val` was never spliced warning: rule `Storagetype_sub/pack` was never spliced +warning: rule `Store_ok` was never spliced +warning: rule `Structinst_ok` was never spliced warning: rule `Subtype_ok` was never spliced warning: rule `Subtype_ok2` was never spliced warning: rule `Table_ok` was never spliced +warning: rule `Tableinst_ok` was never spliced warning: rule `Tabletype_ok` was never spliced warning: rule `Tabletype_sub` was never spliced warning: rule `Tag_ok` was never spliced +warning: rule `Taginst_ok` was never spliced warning: rule `Tagtype_ok` was never spliced warning: rule `Tagtype_sub` was never spliced warning: rule `Type_ok` was never spliced @@ -1460,6 +1532,7 @@ warning: definition `NULLEXNREF` was never spliced warning: definition `NULLEXTERNREF` was never spliced warning: definition `NULLFUNCREF` was never spliced warning: definition `NULLREF` was never spliced +warning: definition `NotImmutReachable` was never spliced warning: definition `R_fmadd` was never spliced warning: definition `R_fmax` was never spliced warning: definition `R_fmin` was never spliced @@ -1527,12 +1600,14 @@ warning: definition `demote__` was never spliced warning: definition `diffrt` was never spliced warning: definition `dim` was never spliced warning: definition `disjoint_` was never spliced +warning: definition `dots` was never spliced warning: definition `elem` was never spliced warning: definition `eleminst` was never spliced warning: definition `elemsd` was never spliced +warning: definition `evalexprs` was never spliced +warning: definition `evalexprss` was never spliced warning: definition `evalglobals` was never spliced warning: definition `exninst` was never spliced -warning: definition `expanddt` was never spliced warning: definition `expon` was never spliced warning: definition `exportsd` was never spliced warning: definition `extend__` was never spliced @@ -1557,6 +1632,7 @@ warning: definition `fnat` was never spliced warning: definition `fne_` was never spliced warning: definition `fnearest_` was never spliced warning: definition `fneg_` was never spliced +warning: definition `fof` was never spliced warning: definition `fone` was never spliced warning: definition `fpmax_` was never spliced warning: definition `fpmin_` was never spliced @@ -1565,6 +1641,7 @@ warning: definition `free_absheaptype` was never spliced warning: definition `free_addrtype` was never spliced warning: definition `free_block` was never spliced warning: definition `free_blocktype` was never spliced +warning: definition `free_catch` was never spliced warning: definition `free_comptype` was never spliced warning: definition `free_consttype` was never spliced warning: definition `free_data` was never spliced @@ -1613,6 +1690,7 @@ warning: definition `free_table` was never spliced warning: definition `free_tableidx` was never spliced warning: definition `free_tabletype` was never spliced warning: definition `free_tag` was never spliced +warning: definition `free_tagidx` was never spliced warning: definition `free_tagtype` was never spliced warning: definition `free_type` was never spliced warning: definition `free_typeidx` was never spliced @@ -1637,7 +1715,6 @@ warning: definition `funcsxx` was never spliced warning: definition `fvbinop_` was never spliced warning: definition `fvrelop_` was never spliced warning: definition `fvternop_` was never spliced -warning: definition `fvtestop_` was never spliced warning: definition `fvunop_` was never spliced warning: definition `fzero` was never spliced warning: definition `global` was never spliced @@ -1650,6 +1727,7 @@ warning: definition `growmem` was never spliced warning: definition `growtable` was never spliced warning: definition `half` was never spliced warning: definition `halfop` was never spliced +warning: definition `hostcall` was never spliced warning: definition `iabs_` was never spliced warning: definition `iadd_` was never spliced warning: definition `iadd_sat_` was never spliced @@ -1738,7 +1816,6 @@ warning: definition `ivshiftopsx_` was never spliced warning: definition `ivshufflop_` was never spliced warning: definition `ivswizzlop_` was never spliced warning: definition `ivternopnd_` was never spliced -warning: definition `ivtestop_` was never spliced warning: definition `ivunop_` was never spliced warning: definition `ixor_` was never spliced warning: definition `jsize` was never spliced @@ -1746,6 +1823,7 @@ warning: definition `jsizenn` was never spliced warning: definition `lanes_` was never spliced warning: definition `lanetype` was never spliced warning: definition `lcvtop__` was never spliced +warning: definition `lift_result` was never spliced warning: definition `local` was never spliced warning: definition `lpacknum_` was never spliced warning: definition `lsize` was never spliced @@ -1798,6 +1876,7 @@ warning: definition `signif` was never spliced warning: definition `sizenn` was never spliced warning: definition `sizenn1` was never spliced warning: definition `sizenn2` was never spliced +warning: definition `sof` was never spliced warning: definition `startsd` was never spliced warning: definition `store` was never spliced warning: definition `structinst` was never spliced @@ -1857,7 +1936,7 @@ warning: definition `unpack` was never spliced warning: definition `unpackfield_` was never spliced warning: definition `unpackshape` was never spliced warning: definition `unrolldt` was never spliced -warning: definition `unrollht` was never spliced +warning: definition `unrollht_` was never spliced warning: definition `unrollrt` was never spliced warning: definition `utf8` was never spliced warning: definition `var` was never spliced @@ -1876,7 +1955,6 @@ warning: definition `vsize` was never spliced warning: definition `vsizenn` was never spliced warning: definition `vswizzlop_` was never spliced warning: definition `vternop_` was never spliced -warning: definition `vtestop_` was never spliced warning: definition `vunop_` was never spliced warning: definition `vunpack` was never spliced warning: definition `vvbinop_` was never spliced @@ -1900,6 +1978,7 @@ warning: definition `zbytes_` was never spliced warning: definition `zero` was never spliced warning: definition `zeroop` was never spliced warning: definition `zsize` was never spliced +warning: rule prose `Arrayinst_ok` was never spliced warning: rule prose `Blocktype_ok` was never spliced warning: rule prose `Blocktype_ok/typeidx` was never spliced warning: rule prose `Blocktype_ok/valtype` was never spliced @@ -1916,7 +1995,10 @@ warning: rule prose `Comptype_sub` was never spliced warning: rule prose `Comptype_sub/array` was never spliced warning: rule prose `Comptype_sub/func` was never spliced warning: rule prose `Comptype_sub/struct` was never spliced +warning: rule prose `Config_ok` was never spliced +warning: rule prose `Context_ok` was never spliced warning: rule prose `Data_ok` was never spliced +warning: rule prose `Datainst_ok` was never spliced warning: rule prose `Datamode_ok` was never spliced warning: rule prose `Datamode_ok/active` was never spliced warning: rule prose `Datamode_ok/passive` was never spliced @@ -1926,14 +2008,22 @@ warning: rule prose `Deftype_sub` was never spliced warning: rule prose `Deftype_sub/refl` was never spliced warning: rule prose `Deftype_sub/super` was never spliced warning: rule prose `Elem_ok` was never spliced +warning: rule prose `Eleminst_ok` was never spliced warning: rule prose `Elemmode_ok` was never spliced warning: rule prose `Elemmode_ok/active` was never spliced warning: rule prose `Elemmode_ok/declare` was never spliced warning: rule prose `Elemmode_ok/passive` was never spliced warning: rule prose `Eval_expr` was never spliced +warning: rule prose `Exninst_ok` was never spliced +warning: rule prose `Expand` was never spliced +warning: rule prose `Expand_use` was never spliced +warning: rule prose `Expand_use/deftype` was never spliced +warning: rule prose `Expand_use/typeidx` was never spliced warning: rule prose `Export_ok` was never spliced +warning: rule prose `Exportinst_ok` was never spliced warning: rule prose `Expr_const` was never spliced warning: rule prose `Expr_ok` was never spliced +warning: rule prose `Expr_ok2` was never spliced warning: rule prose `Externaddr_ok` was never spliced warning: rule prose `Externaddr_ok/func` was never spliced warning: rule prose `Externaddr_ok/global` was never spliced @@ -1963,8 +2053,14 @@ warning: rule prose `Fieldtype_ok` was never spliced warning: rule prose `Fieldtype_sub` was never spliced warning: rule prose `Fieldtype_sub/const` was never spliced warning: rule prose `Fieldtype_sub/var` was never spliced +warning: rule prose `Fieldval_ok` was never spliced +warning: rule prose `Fieldval_ok/packval` was never spliced +warning: rule prose `Fieldval_ok/val` was never spliced +warning: rule prose `Frame_ok` was never spliced warning: rule prose `Func_ok` was never spliced +warning: rule prose `Funcinst_ok` was never spliced warning: rule prose `Global_ok` was never spliced +warning: rule prose `Globalinst_ok` was never spliced warning: rule prose `Globals_ok` was never spliced warning: rule prose `Globals_ok/cons` was never spliced warning: rule prose `Globals_ok/empty` was never spliced @@ -1974,6 +2070,7 @@ warning: rule prose `Globaltype_sub/const` was never spliced warning: rule prose `Globaltype_sub/var` was never spliced warning: rule prose `Heaptype_ok` was never spliced warning: rule prose `Heaptype_ok/abs` was never spliced +warning: rule prose `Heaptype_ok/bot` was never spliced warning: rule prose `Heaptype_ok/typeuse` was never spliced warning: rule prose `Heaptype_sub` was never spliced warning: rule prose `Heaptype_sub/array` was never spliced @@ -2124,23 +2221,48 @@ warning: rule prose `Instr_ok/vvternop` was never spliced warning: rule prose `Instr_ok/vvtestop` was never spliced warning: rule prose `Instr_ok/vvunop` was never spliced warning: rule prose `Instr_ok/wideop` was never spliced +warning: rule prose `Instr_ok2` was never spliced +warning: rule prose `Instr_ok2/call_ref` was never spliced +warning: rule prose `Instr_ok2/frame` was never spliced +warning: rule prose `Instr_ok2/handler` was never spliced +warning: rule prose `Instr_ok2/label` was never spliced +warning: rule prose `Instr_ok2/plain` was never spliced +warning: rule prose `Instr_ok2/ref` was never spliced +warning: rule prose `Instr_ok2/return_call_ref` was never spliced +warning: rule prose `Instr_ok2/trap` was never spliced warning: rule prose `Instrs_ok` was never spliced warning: rule prose `Instrs_ok/empty` was never spliced warning: rule prose `Instrs_ok/frame` was never spliced +warning: rule prose `Instrs_ok/instr` was never spliced warning: rule prose `Instrs_ok/seq` was never spliced warning: rule prose `Instrs_ok/sub` was never spliced +warning: rule prose `Instrs_ok2` was never spliced +warning: rule prose `Instrs_ok2/empty` was never spliced +warning: rule prose `Instrs_ok2/frame` was never spliced +warning: rule prose `Instrs_ok2/seq` was never spliced +warning: rule prose `Instrs_ok2/sub` was never spliced warning: rule prose `Instrtype_ok` was never spliced warning: rule prose `Instrtype_sub` was never spliced warning: rule prose `Limits_ok` was never spliced warning: rule prose `Limits_sub` was never spliced +warning: rule prose `Limits_sub/eps` was never spliced +warning: rule prose `Limits_sub/max` was never spliced warning: rule prose `Local_ok` was never spliced warning: rule prose `Local_ok/set` was never spliced warning: rule prose `Local_ok/unset` was never spliced +warning: rule prose `Localtype_ok` was never spliced +warning: rule prose `Localval_ok` was never spliced +warning: rule prose `Localval_ok/set` was never spliced +warning: rule prose `Localval_ok/unset` was never spliced warning: rule prose `Mem_ok` was never spliced +warning: rule prose `Memarg_ok` was never spliced +warning: rule prose `Meminst_ok` was never spliced warning: rule prose `Memtype_ok` was never spliced warning: rule prose `Memtype_sub` was never spliced warning: rule prose `Module_ok` was never spliced +warning: rule prose `Moduleinst_ok` was never spliced warning: rule prose `Nondefaultable` was never spliced +warning: rule prose `NotImmutReachable` was never spliced warning: rule prose `NotationTypingInstrScheme` was never spliced warning: rule prose `NotationTypingInstrScheme/block` was never spliced warning: rule prose `NotationTypingInstrScheme/global.get` was never spliced @@ -2150,6 +2272,7 @@ warning: rule prose `Numtype_ok` was never spliced warning: rule prose `Numtype_sub` was never spliced warning: rule prose `Packtype_ok` was never spliced warning: rule prose `Packtype_sub` was never spliced +warning: rule prose `Packval_ok` was never spliced warning: rule prose `Rectype_ok` was never spliced warning: rule prose `Rectype_ok/cons` was never spliced warning: rule prose `Rectype_ok/empty` was never spliced @@ -2173,8 +2296,11 @@ warning: rule prose `Reftype_sub/null` was never spliced warning: rule prose `Resulttype_ok` was never spliced warning: rule prose `Resulttype_sub` was never spliced warning: rule prose `Start_ok` was never spliced +warning: rule prose `State_ok` was never spliced warning: rule prose `Step/array.new_fixed` was never spliced warning: rule prose `Step/array.set` was never spliced +warning: rule prose `Step/call_ref` was never spliced +warning: rule prose `Step/call_ref-hostfunc-*` was never spliced warning: rule prose `Step/data.drop` was never spliced warning: rule prose `Step/elem.drop` was never spliced warning: rule prose `Step/global.set` was never spliced @@ -2257,7 +2383,6 @@ warning: rule prose `Step_read/block` was never spliced warning: rule prose `Step_read/br_on_cast` was never spliced warning: rule prose `Step_read/br_on_cast_fail` was never spliced warning: rule prose `Step_read/call` was never spliced -warning: rule prose `Step_read/call_ref` was never spliced warning: rule prose `Step_read/global.get` was never spliced warning: rule prose `Step_read/load` was never spliced warning: rule prose `Step_read/load-num-*` was never spliced @@ -2301,12 +2426,16 @@ warning: rule prose `Storagetype_ok/val` was never spliced warning: rule prose `Storagetype_sub` was never spliced warning: rule prose `Storagetype_sub/pack` was never spliced warning: rule prose `Storagetype_sub/val` was never spliced +warning: rule prose `Store_ok` was never spliced +warning: rule prose `Structinst_ok` was never spliced warning: rule prose `Subtype_ok` was never spliced warning: rule prose `Subtype_ok2` was never spliced warning: rule prose `Table_ok` was never spliced +warning: rule prose `Tableinst_ok` was never spliced warning: rule prose `Tabletype_ok` was never spliced warning: rule prose `Tabletype_sub` was never spliced warning: rule prose `Tag_ok` was never spliced +warning: rule prose `Taginst_ok` was never spliced warning: rule prose `Tagtype_ok` was never spliced warning: rule prose `Tagtype_sub` was never spliced warning: rule prose `Type_ok` was never spliced @@ -2351,6 +2480,7 @@ warning: definition prose `NULLEXNREF` was never spliced warning: definition prose `NULLEXTERNREF` was never spliced warning: definition prose `NULLFUNCREF` was never spliced warning: definition prose `NULLREF` was never spliced +warning: definition prose `NotImmutReachable` was never spliced warning: definition prose `STRUCTREF` was never spliced warning: definition prose `add_arrayinst` was never spliced warning: definition prose `add_exninst` was never spliced @@ -2408,19 +2538,22 @@ warning: definition prose `disjoint_` was never spliced warning: definition prose `elem` was never spliced warning: definition prose `eleminst` was never spliced warning: definition prose `elemsd` was never spliced +warning: definition prose `evalexprs` was never spliced +warning: definition prose `evalexprss` was never spliced warning: definition prose `evalglobals` was never spliced warning: definition prose `exninst` was never spliced -warning: definition prose `expanddt` was never spliced warning: definition prose `expon` was never spliced warning: definition prose `exportsd` was never spliced warning: definition prose `extwideop__` was never spliced warning: definition prose `fnat` was never spliced +warning: definition prose `fof` was never spliced warning: definition prose `fone` was never spliced warning: definition prose `frame` was never spliced warning: definition prose `free_absheaptype` was never spliced warning: definition prose `free_addrtype` was never spliced warning: definition prose `free_block` was never spliced warning: definition prose `free_blocktype` was never spliced +warning: definition prose `free_catch` was never spliced warning: definition prose `free_comptype` was never spliced warning: definition prose `free_consttype` was never spliced warning: definition prose `free_data` was never spliced @@ -2469,6 +2602,7 @@ warning: definition prose `free_table` was never spliced warning: definition prose `free_tableidx` was never spliced warning: definition prose `free_tabletype` was never spliced warning: definition prose `free_tag` was never spliced +warning: definition prose `free_tagidx` was never spliced warning: definition prose `free_tagtype` was never spliced warning: definition prose `free_type` was never spliced warning: definition prose `free_typeidx` was never spliced @@ -2488,7 +2622,6 @@ warning: definition prose `funcsxx` was never spliced warning: definition prose `fvbinop_` was never spliced warning: definition prose `fvrelop_` was never spliced warning: definition prose `fvternop_` was never spliced -warning: definition prose `fvtestop_` was never spliced warning: definition prose `fvunop_` was never spliced warning: definition prose `fzero` was never spliced warning: definition prose `global` was never spliced @@ -2557,12 +2690,12 @@ warning: definition prose `ivshiftopsx_` was never spliced warning: definition prose `ivshufflop_` was never spliced warning: definition prose `ivswizzlop_` was never spliced warning: definition prose `ivternopnd_` was never spliced -warning: definition prose `ivtestop_` was never spliced warning: definition prose `ivunop_` was never spliced warning: definition prose `jsize` was never spliced warning: definition prose `jsizenn` was never spliced warning: definition prose `lanetype` was never spliced warning: definition prose `lcvtop__` was never spliced +warning: definition prose `lift_result` was never spliced warning: definition prose `local` was never spliced warning: definition prose `lpacknum_` was never spliced warning: definition prose `lsize` was never spliced @@ -2610,6 +2743,7 @@ warning: definition prose `size` was never spliced warning: definition prose `sizenn` was never spliced warning: definition prose `sizenn1` was never spliced warning: definition prose `sizenn2` was never spliced +warning: definition prose `sof` was never spliced warning: definition prose `startsd` was never spliced warning: definition prose `store` was never spliced warning: definition prose `structinst` was never spliced @@ -2667,7 +2801,7 @@ warning: definition prose `unpack` was never spliced warning: definition prose `unpackfield_` was never spliced warning: definition prose `unpackshape` was never spliced warning: definition prose `unrolldt` was never spliced -warning: definition prose `unrollht` was never spliced +warning: definition prose `unrollht_` was never spliced warning: definition prose `unrollrt` was never spliced warning: definition prose `var` was never spliced warning: definition prose `vbinop_` was never spliced @@ -2684,7 +2818,6 @@ warning: definition prose `vsize` was never spliced warning: definition prose `vsizenn` was never spliced warning: definition prose `vswizzlop_` was never spliced warning: definition prose `vternop_` was never spliced -warning: definition prose `vtestop_` was never spliced warning: definition prose `vunop_` was never spliced warning: definition prose `vunpack` was never spliced warning: definition prose `vvbinop_` was never spliced From 67f93aa85401f968129e508debbd03cd0b5b9768 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 10 Aug 2026 08:41:32 -0700 Subject: [PATCH 48/51] Re-bless output --- spectec/test-frontend/TEST.md | 865 +++++----- spectec/test-interpreter/TEST.md | 134 +- spectec/test-latex/TEST.md | 100 -- spectec/test-middlend/TEST.md | 2597 ++++++++++++++---------------- spectec/test-prose/TEST.md | 149 -- spectec/test-splice/TEST.md | 24 - 6 files changed, 1699 insertions(+), 2170 deletions(-) diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 64600b48dc..b7022f739c 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -1639,18 +1639,6 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | ADD128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - | SUB128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE(sx) - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -2161,8 +2149,6 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | WIDEOP(numtype : numtype, wideop_(numtype)) - | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -2243,233 +2229,233 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-458.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-460.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-480.99 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.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-3.0/1.3-syntax.instructions.spectec:482.1-482.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-478.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-494.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-505.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-495.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-507.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-497.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-509.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-499.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-511.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-501.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-513.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-503.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.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*`})) } @@ -3913,131 +3899,123 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 - rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 - rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.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-3.0/2.3-validation.instructions.spectec:627.1-631.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.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-3.0/2.3-validation.instructions.spectec:633.1-637.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:627.1-631.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.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*`},))) @@ -4998,33 +4976,6 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -6340,16 +6291,6 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -8676,7 +8617,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -9162,525 +9103,517 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 - prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 - prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } @@ -11205,14 +11138,6 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index 70861e9696..8ddce4a343 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -1,36 +1,140 @@ # Preview ```sh -$ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wat addTwo 30 12 2>&1 +$ ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --interpreter ../test-interpreter/sample.wat addTwo 30 12 2>&1 spectec 0.5 generator == Parsing... -../../../_specification/wasm-3.0/*.spectec: No such file or directory -[2] -$ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wasm addTwo 40 2 2>&1 +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Initializing interpreter... +== Interpreting... +42 +== Complete. +$ ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --interpreter ../test-interpreter/sample.wasm addTwo 40 2 2>&1 spectec 0.5 generator == Parsing... -../../../_specification/wasm-3.0/*.spectec: No such file or directory -[2] -$ ../src/exe-spectec/main.exe ../../../_specification/wasm-3.0/*.spectec -v -l --interpreter ../test-interpreter/sample.wast 2>&1 +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Initializing interpreter... +== Interpreting... +42 +== Complete. +$ ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --interpreter ../test-interpreter/sample.wast 2>&1 spectec 0.5 generator == Parsing... -../../../_specification/wasm-3.0/*.spectec: No such file or directory -[2] -$ for v in 1 2 3; do ( \ +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Initializing interpreter... +== Interpreting... +- print_i32: 10 +== Complete. +$ for v in 1 2; 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 Running test for Wasm 1.0... spectec 0.5 generator == Parsing... -../../../_specification/wasm-1.0/*.spectec: No such file or directory +== Elaboration... +== IL Validation... +== Running pass sideconditions... +== IL Validation after pass sideconditions... +== Translating to AL... +== Initializing interpreter... +== Interpreting... +- Failed to parse ../test-interpreter/spec-test-1/conversions.wast + +- Failed to parse ../test-interpreter/spec-test-1/data.wast + +- Failed to parse ../test-interpreter/spec-test-1/elem.wast + +- Failed to parse ../test-interpreter/spec-test-1/f32.wast + +- Failed to parse ../test-interpreter/spec-test-1/f64.wast + +- Failed to parse ../test-interpreter/spec-test-1/float_exprs.wast + +- Failed to parse ../test-interpreter/spec-test-1/float_misc.wast + +- print_i32: 83 +- Failed to parse ../test-interpreter/spec-test-1/imports.wast + +- print_i32: 42 +- print_i32: 123 +- print_i32: 1 +- print_i32: 2 +- print: () +8 parsing fail +== Complete. Running test for Wasm 2.0... spectec 0.5 generator == Parsing... -../../../_specification/wasm-2.0/*.spectec: No such file or directory -Running test for Wasm 3.0... +== 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. +$ echo "Running test for Wasm latest..." && \ +> ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --test-version 3 --interpreter ../test-interpreter/spec-test-3 2>&1 +Running test for Wasm latest... spectec 0.5 generator == Parsing... -../../../_specification/wasm-3.0/*.spectec: No such file or directory -[2] +== 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. ``` diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index e95dac1968..31adb20429 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -3686,19 +3686,6 @@ $$ \end{array} $$ -$$ -\begin{array}[t]{@{}lrrl@{}l@{}} -& {{\mathit{wideop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{add{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ -& & | & \mathsf{sub{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lrrl@{}l@{}} -& {{\mathit{extwideop}}}_{{\mathsf{i}}{N}} & ::= & {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N = 64 \\ -\end{array} -$$ - $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{testop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{eqz} \\ @@ -3996,8 +3983,6 @@ $$ & & | & {\mathit{numtype}} {.} {{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}_1 {.} {{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ -& & | & {\mathit{numtype}} {.} {{\mathit{wideop}}}_{{\mathit{numtype}}} \\ -& & | & {\mathit{numtype}} {.} {{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ & & | & {\mathit{vectype}} {.} {\mathit{vvunop}} \\ & & | & {\mathit{vectype}} {.} {\mathit{vvbinop}} \\ @@ -7107,26 +7092,6 @@ C \vdash {\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2} : \end{array} $$ -$$ -\begin{array}{@{}c@{}}\displaystyle -\frac{ -}{ -C \vdash {\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}instr{-}wideop}]} -\qquad -\end{array} -$$ - -$$ -\begin{array}{@{}c@{}}\displaystyle -\frac{ -}{ -C \vdash {\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} -} \, {[\textsc{\scriptsize T{-}instr{-}extwideop}]} -\qquad -\end{array} -$$ - \vspace{1ex} $$ @@ -8456,54 +8421,6 @@ $$ \vspace{1ex} -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(N, i_1, i_2) & = & & \\ - \multicolumn{4}{@{}l@{}}{\quad -\begin{array}[t]{@{}l@{}} -{{\mathrm{ior}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_1)}, {{\mathrm{ishl}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_2)}, N)) \\ -\end{array} -} \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(N, i_1) & = & ({{\mathrm{wrap}}}_{N, N}(i_1), {{\mathrm{wrap}}}_{N, N}({{\mathrm{ishr}}}{\mathsf{u}}{{}_{N}(i_1, N)})) \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{add{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{iadd}}}_{N}(i_1, i_2) \\ -{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{sub{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{isub}}}_{N}(i_1, i_2) \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4) & = & & \\ - \multicolumn{4}{@{}l@{}}{\quad -\begin{array}[t]{@{}l@{}} -{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4))) \\ -\end{array} -} \\ -\end{array} -$$ - -$$ -\begin{array}[t]{@{}lcl@{}l@{}} -{{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2) & = & & \\ - \multicolumn{4}{@{}l@{}}{\quad -\begin{array}[t]{@{}l@{}} -{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_2)})) \\ -\end{array} -} \\ -\end{array} -$$ - -\vspace{1ex} - $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \epsilon \\ @@ -10954,15 +10871,6 @@ $$ \vspace{1ex} -$$ -\begin{array}[t]{@{}lrcl@{}l@{}} -{[\textsc{\scriptsize E{-}wideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}}{.}\mathsf{const}~c_3)~({\mathit{nt}}{.}\mathsf{const}~c_4)~({\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4) \\ -{[\textsc{\scriptsize E{-}extwideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2) \\ -\end{array} -$$ - -\vspace{1ex} - $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}vvunop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}}) & \hookrightarrow & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) & \quad \mbox{if}~ c \in {{\mathit{vvunop}}}{{}_{\mathsf{v{\scriptstyle 128}}}(c_1)} \\ @@ -12013,10 +11921,6 @@ $$ & & | & \mathtt{0xFC}~~5{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mathtt{0xFC}~~6{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mathtt{0xFC}~~7{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ -& & | & \mathtt{0xFC}~~13{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{add{\scriptstyle 128}} \\ -& & | & \mathtt{0xFC}~~14{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub{\scriptstyle 128}} \\ -& & | & \mathtt{0xFC}~~15{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{s}} \\ -& & | & \mathtt{0xFC}~~16{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{u}} \\ \end{array} $$ @@ -13466,10 +13370,6 @@ $$ & & | & \mbox{‘\texttt{i64.reinterpret\_f64}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mbox{‘\texttt{f32.reinterpret\_i32}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{f64.reinterpret\_i64}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ -& & | & \mbox{‘\texttt{i64.add128}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{add{\scriptstyle 128}} \\ -& & | & \mbox{‘\texttt{i64.sub128}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub{\scriptstyle 128}} \\ -& & | & \mbox{‘\texttt{i64.mul\_wide\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{s}} \\ -& & | & \mbox{‘\texttt{i64.mul\_wide\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{u}} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index f8b8800c4b..d4e43c49ac 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -1629,18 +1629,6 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | ADD128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - | SUB128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE(sx) - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -2151,8 +2139,6 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | WIDEOP(numtype : numtype, wideop_(numtype)) - | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -2233,233 +2219,233 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-458.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-460.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-480.99 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.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-3.0/1.3-syntax.instructions.spectec:482.1-482.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-478.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-494.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-505.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-495.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-507.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-497.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-509.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-499.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-511.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-501.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-513.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-503.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.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*`})) } @@ -3903,131 +3889,123 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 - rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 - rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.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-3.0/2.3-validation.instructions.spectec:627.1-631.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.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-3.0/2.3-validation.instructions.spectec:633.1-637.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:627.1-631.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.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*`},))) @@ -4988,33 +4966,6 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -6330,16 +6281,6 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -8666,7 +8607,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -9152,525 +9093,517 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 - prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 - prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } @@ -11195,14 +11128,6 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) @@ -13613,18 +13538,6 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | ADD128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - | SUB128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE(sx) - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -14135,8 +14048,6 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | WIDEOP(numtype : numtype, wideop_(numtype)) - | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -14217,233 +14128,233 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-458.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-460.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-480.99 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.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-3.0/1.3-syntax.instructions.spectec:482.1-482.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-478.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-494.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-505.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-495.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-507.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-497.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-509.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-499.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-511.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-501.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-513.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-503.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.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*`})) } @@ -15887,131 +15798,123 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 - rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 - rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.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-3.0/2.3-validation.instructions.spectec:627.1-631.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.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-3.0/2.3-validation.instructions.spectec:633.1-637.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:627.1-631.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.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*`},))) @@ -16972,33 +16875,6 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -18316,16 +18192,6 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -20652,7 +20518,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -21138,525 +21004,517 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 - prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 - prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } @@ -23181,14 +23039,6 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) @@ -25599,18 +25449,6 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | ADD128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - | SUB128 - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec -syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = - | MUL_WIDE(sx) - -- if ($sizenn((Inn : Inn <: numtype)) = 64) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ @@ -26121,8 +25959,6 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) - | WIDEOP(numtype : numtype, wideop_(numtype)) - | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -26203,233 +26039,233 @@ def $free_catch(catch : catch) : free ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:595.1-595.44 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:596.1-596.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:597.1-597.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:598.1-598.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:431.1-431.30 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.26 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-448.27 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:449.1-449.86 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.92 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-452.91 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:453.1-454.79 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:456.1-456.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-459.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:460.1-460.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-463.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.83 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 def $free_instr{labelidx : labelidx, reftype_1 : reftype, reftype_2 : reftype}(BR_ON_CAST_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 def $free_instr{funcidx : funcidx}(CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:458.1-458.59 def $free_instr{typeuse : typeuse}(CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:459.1-460.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:471.1-471.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:461.1-461.29 def $free_instr(RETURN_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:462.1-462.62 def $free_instr{funcidx : funcidx}(RETURN_CALL_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:463.1-463.66 def $free_instr{typeuse : typeuse}(RETURN_CALL_REF_instr(typeuse)) = $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-475.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:464.1-465.53 def $free_instr{tableidx : tableidx, typeuse : typeuse}(RETURN_CALL_INDIRECT_instr(tableidx, typeuse)) = $free_tableidx(tableidx) +++ $free_typeuse(typeuse) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-477.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:467.1-467.53 def $free_instr{tagidx : tagidx}(THROW_instr(tagidx)) = $free_tagidx(tagidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:478.1-478.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:468.1-468.32 def $free_instr(THROW_REF_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:479.1-480.99 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:469.1-470.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-3.0/1.3-syntax.instructions.spectec:482.1-482.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:472.1-472.63 def $free_instr{numtype : numtype, numlit : num_(numtype)}(CONST_instr(numtype, numlit)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:473.1-473.60 def $free_instr{numtype : numtype, unop : unop_(numtype)}(UNOP_instr(numtype, unop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:474.1-474.62 def $free_instr{numtype : numtype, binop : binop_(numtype)}(BINOP_instr(numtype, binop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:475.1-475.64 def $free_instr{numtype : numtype, testop : testop_(numtype)}(TESTOP_instr(numtype, testop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:476.1-476.62 def $free_instr{numtype : numtype, relop : relop_(numtype)}(RELOP_instr(numtype, relop)) = $free_numtype(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-488.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:477.1-478.55 def $free_instr{numtype_1 : numtype, numtype_2 : numtype, cvtop : cvtop__(numtype_2, numtype_1)}(CVTOP_instr(numtype_1, numtype_2, cvtop)) = $free_numtype(numtype_1) +++ $free_numtype(numtype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:480.1-480.64 def $free_instr{vectype : vectype, veclit : vec_(vectype)}(VCONST_instr(vectype, veclit)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:481.1-481.64 def $free_instr{vectype : vectype, vvunop : vvunop}(VVUNOP_instr(vectype, vvunop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:482.1-482.66 def $free_instr{vectype : vectype, vvbinop : vvbinop}(VVBINOP_instr(vectype, vvbinop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:483.1-483.68 def $free_instr{vectype : vectype, vvternop : vvternop}(VVTERNOP_instr(vectype, vvternop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-494.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:484.1-484.68 def $free_instr{vectype : vectype, vvtestop : vvtestop}(VVTESTOP_instr(vectype, vvtestop)) = $free_vectype(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:495.1-495.56 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:485.1-485.56 def $free_instr{shape : shape, vunop : vunop_(shape)}(VUNOP_instr(shape, vunop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-496.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:486.1-486.58 def $free_instr{shape : shape, vbinop : vbinop_(shape)}(VBINOP_instr(shape, vbinop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:497.1-497.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:487.1-487.60 def $free_instr{shape : shape, vternop : vternop_(shape)}(VTERNOP_instr(shape, vternop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-498.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:488.1-488.60 def $free_instr{shape : shape, vtestop : vtestop_(shape)}(VTESTOP_instr(shape, vtestop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:499.1-499.58 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:489.1-489.58 def $free_instr{shape : shape, vrelop : vrelop_(shape)}(VRELOP_instr(shape, vrelop)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-500.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:490.1-490.64 def $free_instr{ishape : ishape, vshiftop : vshiftop_(ishape)}(VSHIFTOP_instr(ishape, vshiftop)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:501.1-501.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:491.1-491.55 def $free_instr{ishape : ishape}(VBITMASK_instr(ishape)) = $free_shape(ishape!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-502.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:492.1-492.66 def $free_instr{bshape : bshape, vswizzlop : vswizzlop_(bshape)}(VSWIZZLOP_instr(bshape, vswizzlop)) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:503.1-503.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:493.1-493.64 def $free_instr{bshape : bshape, `laneidx*` : laneidx*}(VSHUFFLE_instr(bshape, laneidx*{laneidx <- `laneidx*`})) = $free_shape(bshape!`%`_bshape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-505.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:494.1-495.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextunop : vextunop__(ishape_2, ishape_1)}(VEXTUNOP_instr(ishape_1, ishape_2, vextunop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-507.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:496.1-497.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextbinop : vextbinop__(ishape_2, ishape_1)}(VEXTBINOP_instr(ishape_1, ishape_2, vextbinop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-509.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:498.1-499.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, vextternop : vextternop__(ishape_2, ishape_1)}(VEXTTERNOP_instr(ishape_1, ishape_2, vextternop)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-511.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:500.1-501.49 def $free_instr{ishape_1 : ishape, ishape_2 : ishape, sx : sx}(VNARROW_instr(ishape_1, ishape_2, sx)) = $free_shape(ishape_1!`%`_ishape.0) +++ $free_shape(ishape_2!`%`_ishape.0) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-513.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:502.1-503.47 def $free_instr{shape_1 : shape, shape_2 : shape, vcvtop : vcvtop__(shape_2, shape_1)}(VCVTOP_instr(shape_1, shape_2, vcvtop)) = $free_shape(shape_1) +++ $free_shape(shape_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:504.1-504.51 def $free_instr{shape : shape}(VSPLAT_instr(shape)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:505.1-505.70 def $free_instr{shape : shape, `sx?` : sx?, laneidx : laneidx}(VEXTRACT_LANE_instr(shape, sx?{sx <- `sx?`}, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:516.1-516.66 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:506.1-506.66 def $free_instr{shape : shape, laneidx : laneidx}(VREPLACE_LANE_instr(shape, laneidx)) = $free_shape(shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:518.1-518.62 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:508.1-508.62 def $free_instr{heaptype : heaptype}(`REF.NULL`_instr(heaptype)) = $free_heaptype(heaptype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.34 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:509.1-509.34 def $free_instr(`REF.IS_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.38 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:510.1-510.38 def $free_instr(`REF.AS_NON_NULL`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.29 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:511.1-511.29 def $free_instr(`REF.EQ`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:512.1-512.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:523.1-523.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.30 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-527.33 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-529.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:530.1-530.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.69 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.65 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-535.68 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:536.1-536.70 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:541.1-541.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.32 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:544.1-544.61 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-546.55 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-548.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-550.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.41 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-557.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-559.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:560.1-560.67 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:562.1-562.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-563.63 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:564.1-564.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-565.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:566.1-566.64 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.53 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-571.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-576.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-578.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:579.1-580.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:581.1-582.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:583.1-584.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.59 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-589.51 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.49 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:592.1-592.60 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:432.1-432.31 +;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:600.1-601.47 + ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.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*`})) } @@ -27977,117 +27813,109 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:538.1-539.50 - rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: - `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.50 - rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: - `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) - - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.35 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.41 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.55 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.37 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.51 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.40 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.47 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-581.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:583.1-584.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:586.1-588.29 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:590.1-591.44 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:593.1-595.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:597.1-599.21 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.50 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.57 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.64 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:610.1-611.48 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:619.1-620.24 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:622.1-624.46 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.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-3.0/2.3-validation.instructions.spectec:627.1-631.82 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:621.1-625.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*`},))) @@ -28097,14 +27925,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-3.0/2.3-validation.instructions.spectec:633.1-637.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:627.1-631.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:640.1-643.33 + ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.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*`},))) @@ -29085,33 +28913,6 @@ def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) - -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec -def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec - def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* @@ -30441,18 +30242,6 @@ relation Step_pure: `%~>%`(instr*, instr*) `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if (|[$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]| > 0) - -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) - - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec - rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: - `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) - -- if (|[$extwideop__(nt, extwideop_nt, c_1, c_2)]| > 0) - -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) @@ -32882,7 +32671,7 @@ grammar Blaneidx : laneidx ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.1-814.71 +;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 grammar Binstr : instr ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr @@ -33368,525 +33157,517 @@ grammar Binstr : instr prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:390.5-390.38 - prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:391.5-391.38 - prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:392.5-392.45 - prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:393.5-393.45 - prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.50 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(1,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:398.5-398.70 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(2,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:399.5-399.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(3,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:400.5-400.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(4,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:401.5-401.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(5,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:402.5-402.71 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(6,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:403.5-403.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.52 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:418.5-418.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:419.5-419.73 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:420.5-420.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:422.5-422.74 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:423.5-423.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:424.5-424.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:428.5-428.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:438.5-438.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:439.5-439.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.38 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:454.5-454.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:455.5-455.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:456.5-456.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.58 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:467.5-467.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:468.5-468.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:469.5-469.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:480.5-480.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:481.5-481.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:482.5-482.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:493.5-493.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:494.5-494.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:495.5-495.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:503.5-503.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:504.5-504.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:512.5-512.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:513.5-513.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:515.5-515.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:516.5-516.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:517.5-517.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:526.5-526.40 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:527.5-527.36 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:528.5-528.37 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:532.5-532.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:536.5-536.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:540.5-540.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:541.5-541.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:542.5-542.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:546.5-546.48 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:550.5-550.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:555.5-555.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:569.5-569.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:570.5-570.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:571.5-571.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:574.5-574.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:575.5-575.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:579.5-579.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:580.5-580.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:596.5-596.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:597.5-597.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:598.5-598.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:600.5-600.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:601.5-601.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:602.5-602.57 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:606.5-606.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:610.5-610.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:622.5-622.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.47 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:632.5-632.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:635.5-635.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:636.5-636.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:640.5-640.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:641.5-641.70 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:645.5-645.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:646.5-646.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:650.5-650.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:661.5-661.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:671.5-671.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:672.5-672.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:673.5-673.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:681.5-681.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:683.5-683.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:684.5-684.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:685.5-685.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:689.5-689.72 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:693.5-693.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:694.5-694.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:698.5-698.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.41 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.63 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:709.5-709.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.45 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:715.5-715.49 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:725.5-725.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:726.5-726.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:741.5-741.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:742.5-742.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:743.5-743.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:754.5-754.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:755.5-755.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:756.5-756.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:759.5-759.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:760.5-760.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:769.5-769.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:770.5-770.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:771.5-771.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.46 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.42 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:782.5-782.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:783.5-783.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:784.5-784.43 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.44 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.51 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:792.5-792.53 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.5-793.54 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.59 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.61 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.62 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.60 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:808.5-808.67 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:809.5-809.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:810.5-810.64 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:811.5-811.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:812.5-812.66 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:813.5-813.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:814.5-814.71 + ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } @@ -35411,14 +35192,6 @@ grammar Tplaininstr_(I : I) : instr ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec - prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index f0f91589c4..5f28a90733 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -16363,16 +16363,6 @@ The instruction :math:`({\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\ma -The instruction :math:`({\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}})` is :ref:`valid ` with the instruction type :math:`{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}~{\mathit{nt}}`. - - - - -The instruction :math:`({\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}})` is :ref:`valid ` with the instruction type :math:`{\mathit{nt}}~{\mathit{nt}}~\rightarrow~{\mathit{nt}}~{\mathit{nt}}`. - - - - The instruction :math:`(\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c)` is :ref:`valid ` with the instruction type :math:`\epsilon~\rightarrow~\mathsf{v{\scriptstyle 128}}`. @@ -19628,56 +19618,6 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Push the value :math:`({\mathit{nt}}_2{.}\mathsf{const}~c)` to the stack. -:math:`{\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}}` -......................................................... - - -1. Assert: Due to validation, a value of number type :math:`{\mathit{nt}}` is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_4)` from the stack. - -#. Assert: Due to validation, a number value is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_3)` from the stack. - -#. Assert: Due to validation, a number value is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_2)` from the stack. - -#. Assert: Due to validation, a number value is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_1)` from the stack. - -#. Assert: Due to validation, :math:`{|{{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4)|} > 0`. - -#. Let :math:`(c_5, c_6)` be the destructuring of an element of :math:`{{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4)`. - -#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_5)` to the stack. - -#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_6)` to the stack. - - -:math:`{\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}}` -............................................................ - - -1. Assert: Due to validation, a value of number type :math:`{\mathit{nt}}` is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_2)` from the stack. - -#. Assert: Due to validation, a number value is on the top of the stack. - -#. Pop the value :math:`({\mathit{numtype}}_0{.}\mathsf{const}~c_1)` from the stack. - -#. Assert: Due to validation, :math:`{|{{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2)|} > 0`. - -#. Let :math:`(c_5, c_6)` be the destructuring of an element of :math:`{{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2)`. - -#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_5)` to the stack. - -#. Push the value :math:`({\mathit{nt}}{.}\mathsf{const}~c_6)` to the stack. - - :math:`\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}}` .......................................................... @@ -25436,47 +25376,6 @@ The instruction sequence :math:`(\mathsf{block}~{\mathit{blocktype}}~{{\mathit{i #. Return :math:`{{\mathrm{reinterpret}}}_{{\mathit{numtype}}, {\mathit{numtype}'}}(i_1)`. -:math:`{{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(N, i_1, i_2)` -........................................................... - - -1. Return :math:`{{\mathrm{ior}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_1)}, {{\mathrm{ishl}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_2)}, N))`. - - -:math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(N, i_1)` -..................................................... - - -1. Return :math:`({{\mathrm{wrap}}}_{N, N}(i_1), {{\mathrm{wrap}}}_{N, N}({{\mathrm{ishr}}}{\mathsf{u}}{{}_{N}(i_1, N)}))`. - - -:math:`{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, {\mathit{wideop}}, i_1, i_2)` -............................................................................. - - -1. If :math:`{\mathit{wideop}} = \mathsf{add{\scriptstyle 128}}`, then: - - a. Return :math:`{{\mathrm{iadd}}}_{N}(i_1, i_2)`. - -#. Assert: Due to validation, :math:`{\mathit{wideop}} = \mathsf{sub{\scriptstyle 128}}`. - -#. Return :math:`{{\mathrm{isub}}}_{N}(i_1, i_2)`. - - -:math:`{{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4)` -.................................................................................... - - -1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4)))`. - - -:math:`{{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2)` -............................................................................................................ - - -1. Return :math:`{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_2)}))`. - - :math:`{\mathrm{zeroop}}({{\mathit{lanetype}'}}{\mathsf{x}}{M_1}, {{\mathit{lanetype}}}{\mathsf{x}}{M_2}, {\mathit{vcvtop}})` ............................................................................................................................. @@ -29216,12 +29115,6 @@ Instr_ok/relop Instr_ok/cvtop - the instruction (CVTOP nt_1 nt_2 cvtop) is valid with the instruction type [nt_2] -> [nt_1]. -Instr_ok/wideop -- the instruction (WIDEOP nt wideop_nt) is valid with the instruction type [nt, nt, nt, nt] -> [nt, nt]. - -Instr_ok/extwideop -- the instruction (EXTWIDEOP nt extwideop_nt) is valid with the instruction type [nt, nt] -> [nt, nt]. - Instr_ok/vconst - the instruction (V128.CONST c) is valid with the instruction type [] -> [V128]. @@ -30859,30 +30752,6 @@ Step_pure/cvtop nt_2 nt_1 cvtop 4. Let c be an element of $cvtop__(nt_1, nt_2, cvtop, c_1). 5. Push the value (nt_2.CONST c) to the stack. -Step_pure/wideop nt wideop_nt -1. Assert: Due to validation, a value of value type nt is on the top of the stack. -2. Pop the value (numtype_0.CONST c_4) from the stack. -3. Assert: Due to validation, a value of value type num is on the top of the stack. -4. Pop the value (numtype_0.CONST c_3) from the stack. -5. Assert: Due to validation, a value of value type num is on the top of the stack. -6. Pop the value (numtype_0.CONST c_2) from the stack. -7. Assert: Due to validation, a value of value type num is on the top of the stack. -8. Pop the value (numtype_0.CONST c_1) from the stack. -9. Assert: Due to validation, (|[$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]| > 0). -10. Let (c_5, c_6) be an element of [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]. -11. Push the value (nt.CONST c_5) to the stack. -12. Push the value (nt.CONST c_6) to the stack. - -Step_pure/extwideop nt extwideop_nt -1. Assert: Due to validation, a value of value type nt is on the top of the stack. -2. Pop the value (numtype_0.CONST c_2) from the stack. -3. Assert: Due to validation, a value of value type num is on the top of the stack. -4. Pop the value (numtype_0.CONST c_1) from the stack. -5. Assert: Due to validation, (|[$extwideop__(nt, extwideop_nt, c_1, c_2)]| > 0). -6. Let (c_5, c_6) be an element of [$extwideop__(nt, extwideop_nt, c_1, c_2)]. -7. Push the value (nt.CONST c_5) to the stack. -8. Push the value (nt.CONST c_6) to the stack. - Step_pure/vvunop V128 vvunop 1. Assert: Due to validation, a value of value type V128 is on the top of the stack. 2. Pop the value (V128.CONST c_1) from the stack. @@ -33595,24 +33464,6 @@ cvtop__ numtype numtype' cvtop__ i_1 9. Assert: Due to validation, ($size(numtype) = $size(numtype')). 10. Return [$reinterpret__(numtype, numtype', i_1)]. -iconcat_ Inn N i_1 i_2 -1. Return $ior_(N, $iextend_(N, $sizenn(Inn), U, i_1), $ishl_(N, $iextend_(N, $sizenn(Inn), U, i_2), $sizenn(Inn))). - -isplit_ Inn N i_1 -1. Return ($wrap__(N, $sizenn(Inn), i_1), $wrap__(N, $sizenn(Inn), $ishr_(N, U, i_1, $sizenn(Inn)))). - -wideop_ Inn N wideop_ i_1 i_2 -1. If (wideop_ = ADD128), then: - a. Return $iadd_(N, i_1, i_2). -2. Assert: Due to validation, (wideop_ = SUB128). -3. Return $isub_(N, i_1, i_2). - -wideop__ Inn wideop i_1 i_2 i_3 i_4 -1. Return $isplit_(Inn, 128, $wideop_(Inn, 128, wideop, $iconcat_(Inn, 128, i_1, i_2), $iconcat_(Inn, 128, i_3, i_4))). - -extwideop__ Inn (MUL_WIDE sx) i_1 i_2 -1. Return $isplit_(Inn, 128, $imul_(128, $iextend_(128, $sizenn(Inn), sx, i_1), $iextend_(128, $sizenn(Inn), sx, i_2))). - zeroop lanetype' X M_1 lanetype X M_2 vcvtop__ 1. If lanetype' is Jnn, then: a. If (lanetype is Jnn /\ vcvtop__ is some EXTEND), then: diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 39517ee1b2..55cc7d567c 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -70,8 +70,6 @@ $$ & & | & {\mathit{numtype}} {.} {{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}_1 {.} {{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ -& & | & {\mathit{numtype}} {.} {{\mathit{wideop}}}_{{\mathit{numtype}}} \\ -& & | & {\mathit{numtype}} {.} {{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & \mathsf{local{.}get}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}set}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}tee}~{\mathit{localidx}} \\ @@ -340,7 +338,6 @@ warning: syntax `export` was never spliced warning: syntax `exportinst` was never spliced warning: syntax `externaddr` was never spliced warning: syntax `externidx` was never spliced -warning: syntax `extwideop_` was never spliced warning: syntax `f32` was never spliced warning: syntax `f64` was never spliced warning: syntax `fN` was never spliced @@ -515,7 +512,6 @@ warning: syntax `vvbinop` was never spliced warning: syntax `vvternop` was never spliced warning: syntax `vvtestop` was never spliced warning: syntax `vvunop` was never spliced -warning: syntax `wideop_` was never spliced warning: syntax `zero` was never spliced warning: grammar `Babsheaptype` was never spliced warning: grammar `Bblocktype` was never spliced @@ -590,7 +586,6 @@ warning: grammar `Binstr/num-un-f64` was never spliced warning: grammar `Binstr/num-bin-f64` was never spliced warning: grammar `Binstr/num-cvt` was never spliced warning: grammar `Binstr/num-cvt-sat` was never spliced -warning: grammar `Binstr/num-wide` was never spliced warning: grammar `Binstr/vec-memory` was never spliced warning: grammar `Binstr/vec-const` was never spliced warning: grammar `Binstr/vec-shuffle` was never spliced @@ -852,7 +847,6 @@ warning: grammar `Tplaininstr_/num-cvt-i64` was never spliced warning: grammar `Tplaininstr_/num-cvt-f32` was never spliced warning: grammar `Tplaininstr_/num-cvt-f64` was never spliced warning: grammar `Tplaininstr_/num-cvt-reinterpret` was never spliced -warning: grammar `Tplaininstr_/num-wide` was never spliced warning: grammar `Tplaininstr_/vec-const` was never spliced warning: grammar `Tplaininstr_/vec-shuffle` was never spliced warning: grammar `Tplaininstr_/vec-splat` was never spliced @@ -1168,8 +1162,6 @@ warning: rule `Instr_ok/binop` was never spliced warning: rule `Instr_ok/testop` was never spliced warning: rule `Instr_ok/relop` was never spliced warning: rule `Instr_ok/cvtop` was never spliced -warning: rule `Instr_ok/wideop` was never spliced -warning: rule `Instr_ok/extwideop` was never spliced warning: rule `Instr_ok/vconst` was never spliced warning: rule `Instr_ok/vvunop` was never spliced warning: rule `Instr_ok/vvbinop` was never spliced @@ -1348,8 +1340,6 @@ warning: rule `Step_pure/testop` was never spliced warning: rule `Step_pure/relop` was never spliced warning: rule `Step_pure/cvtop-val` was never spliced warning: rule `Step_pure/cvtop-trap` was never spliced -warning: rule `Step_pure/wideop` was never spliced -warning: rule `Step_pure/extwideop` was never spliced warning: rule `Step_pure/vvunop` was never spliced warning: rule `Step_pure/vvbinop` was never spliced warning: rule `Step_pure/vvternop` was never spliced @@ -1611,7 +1601,6 @@ warning: definition `exninst` was never spliced warning: definition `expon` was never spliced warning: definition `exportsd` was never spliced warning: definition `extend__` was never spliced -warning: definition `extwideop__` was never spliced warning: definition `fabs_` was never spliced warning: definition `fadd_` was never spliced warning: definition `fbits_` was never spliced @@ -1738,7 +1727,6 @@ warning: definition `ibits_` was never spliced warning: definition `ibitselect_` was never spliced warning: definition `ibytes_` was never spliced warning: definition `iclz_` was never spliced -warning: definition `iconcat_` was never spliced warning: definition `ictz_` was never spliced warning: definition `idiv_` was never spliced warning: definition `ieee_` was never spliced @@ -1795,7 +1783,6 @@ warning: definition `is_packtype` was never spliced warning: definition `ishl_` was never spliced warning: definition `ishr_` was never spliced warning: definition `isize` was never spliced -warning: definition `isplit_` was never spliced warning: definition `isub_` was never spliced warning: definition `isub_sat_` was never spliced warning: definition `iswizzle_lane_` was never spliced @@ -1960,8 +1947,6 @@ warning: definition `vunpack` was never spliced warning: definition `vvbinop_` was never spliced warning: definition `vvternop_` was never spliced warning: definition `vvunop_` was never spliced -warning: definition `wideop_` was never spliced -warning: definition `wideop__` was never spliced warning: definition `with_array` was never spliced warning: definition `with_data` was never spliced warning: definition `with_elem` was never spliced @@ -2136,7 +2121,6 @@ warning: rule prose `Instr_ok/data.drop` was never spliced warning: rule prose `Instr_ok/drop` was never spliced warning: rule prose `Instr_ok/elem.drop` was never spliced warning: rule prose `Instr_ok/extern.convert_any` was never spliced -warning: rule prose `Instr_ok/extwideop` was never spliced warning: rule prose `Instr_ok/global.get` was never spliced warning: rule prose `Instr_ok/global.set` was never spliced warning: rule prose `Instr_ok/i31.get` was never spliced @@ -2220,7 +2204,6 @@ warning: rule prose `Instr_ok/vvbinop` was never spliced warning: rule prose `Instr_ok/vvternop` was never spliced warning: rule prose `Instr_ok/vvtestop` was never spliced warning: rule prose `Instr_ok/vvunop` was never spliced -warning: rule prose `Instr_ok/wideop` was never spliced warning: rule prose `Instr_ok2` was never spliced warning: rule prose `Instr_ok2/call_ref` was never spliced warning: rule prose `Instr_ok2/frame` was never spliced @@ -2329,7 +2312,6 @@ warning: rule prose `Step_pure/call_indirect` was never spliced warning: rule prose `Step_pure/cvtop` was never spliced warning: rule prose `Step_pure/drop` was never spliced warning: rule prose `Step_pure/extern.convert_any` was never spliced -warning: rule prose `Step_pure/extwideop` was never spliced warning: rule prose `Step_pure/frame` was never spliced warning: rule prose `Step_pure/handler` was never spliced warning: rule prose `Step_pure/i31.get` was never spliced @@ -2369,7 +2351,6 @@ warning: rule prose `Step_pure/vvbinop` was never spliced warning: rule prose `Step_pure/vvternop` was never spliced warning: rule prose `Step_pure/vvtestop` was never spliced warning: rule prose `Step_pure/vvunop` was never spliced -warning: rule prose `Step_pure/wideop` was never spliced warning: rule prose `Step_read/array.copy` was never spliced warning: rule prose `Step_read/array.fill` was never spliced warning: rule prose `Step_read/array.get` was never spliced @@ -2544,7 +2525,6 @@ warning: definition prose `evalglobals` was never spliced warning: definition prose `exninst` was never spliced warning: definition prose `expon` was never spliced warning: definition prose `exportsd` was never spliced -warning: definition prose `extwideop__` was never spliced warning: definition prose `fnat` was never spliced warning: definition prose `fof` was never spliced warning: definition prose `fone` was never spliced @@ -2637,7 +2617,6 @@ warning: definition prose `halfop` was never spliced warning: definition prose `iabs_` was never spliced warning: definition prose `iadd_` was never spliced warning: definition prose `iadd_sat_` was never spliced -warning: definition prose `iconcat_` was never spliced warning: definition prose `idiv_` was never spliced warning: definition prose `ieq_` was never spliced warning: definition prose `ieqz_` was never spliced @@ -2669,7 +2648,6 @@ warning: definition prose `irelaxed_swizzle_lane_` was never spliced warning: definition prose `irem_` was never spliced warning: definition prose `is_packtype` was never spliced warning: definition prose `isize` was never spliced -warning: definition prose `isplit_` was never spliced warning: definition prose `isub_` was never spliced warning: definition prose `isub_sat_` was never spliced warning: definition prose `iswizzle_lane_` was never spliced @@ -2823,8 +2801,6 @@ warning: definition prose `vunpack` was never spliced warning: definition prose `vvbinop_` was never spliced warning: definition prose `vvternop_` was never spliced warning: definition prose `vvunop_` was never spliced -warning: definition prose `wideop_` was never spliced -warning: definition prose `wideop__` was never spliced warning: definition prose `with_array` was never spliced warning: definition prose `with_data` was never spliced warning: definition prose `with_elem` was never spliced From a11c8e7449e1e6e326dc8a10a3858b285ad95fdb Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 10 Aug 2026 10:46:54 -0700 Subject: [PATCH 49/51] Undo mixup in `TEST.md` blessed files --- spectec/test-frontend/TEST.md | 8452 +++++----- spectec/test-interpreter/TEST.md | 9 +- spectec/test-latex/TEST.md | 102 +- spectec/test-middlend/TEST.md | 23935 +++++++++++++++-------------- spectec/test-splice/TEST.md | 26 +- 5 files changed, 16709 insertions(+), 15815 deletions(-) diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index b7022f739c..2abe7761fd 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -1,256 +1,723 @@ # Test ```sh -$ (../src/exe-spectec/main.exe test.spectec -o test.tex && cat test.tex) -cat: test.tex: No such file or directory -[1] +$ (../src/exe-spectec/main.exe test.spectec --latex -o test.tex && cat test.tex) +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {\mathit{testmixfix}} & ::= & \{ {\mathbb{N}^\ast} \} ~~|~~ {}[ {\mathbb{N}^\ast} ] ~~|~~ \mathbb{N} \rightarrow \mathbb{N} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testmixfix}}(\{ {\mathbb{N}^\ast} \}) & = & {\mathbb{N}^\ast} \\ +{\mathrm{testmixfix}}({}[ {\mathbb{N}^\ast} ]) & = & {\mathbb{N}^\ast} \\ +{\mathrm{testmixfix}}({\mathit{nat}}_1 \rightarrow {\mathit{nat}}_2) & = & {\mathit{nat}}_1~{\mathit{nat}}_2 \\ +\end{array} +$$ + +\vspace{1ex} + +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {\mathit{basea}} & ::= & \mathsf{a}~\mathbb{N} \\ +& {\mathit{baseb}} & ::= & \mathsf{b}~\mathbb{N} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 1}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 2}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 3}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 4}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 5}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +& {\mathit{extc{\kern-0.1em\scriptstyle 6}}} & ::= & {\mathit{basea}} ~~|~~ {\mathit{baseb}} ~~|~~ \mathsf{c}~\mathbb{N} ~~|~~ \mathsf{d} \\ +\end{array} +$$ + +\vspace{1ex} + +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {\mathit{opt}} & ::= & {\mathsf{o}^?} \\ +& {\mathit{list}} & ::= & {\mathsf{l}^\ast} \\ +& {\mathit{variant}} & ::= & \mathsf{v{\scriptstyle 1}}~{\mathit{opt}}~\mathbb{N} \\ +& & | & \mathsf{v{\scriptstyle 2}}~{\mathsf{o}^?}~\mathbb{N} \\ +& & | & \mathsf{v{\scriptstyle 3}}~{\mathbb{T}^?}~\mathbb{N} \\ +& & | & \mathsf{v{\scriptstyle 4}}~{\mathit{list}}~\mathbb{N} \\ +& & | & \mathsf{v{\scriptstyle 5}}~{\mathsf{l}^\ast}~\mathbb{N} \\ +& & | & \mathsf{v{\scriptstyle 6}}~{\mathbb{T}^\ast}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 1}}} & ::= & {\mathit{opt}}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 2}}} & ::= & {\mathsf{o}^?}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 3}}} & ::= & {\mathbb{T}^?}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 4}}} & ::= & {\mathit{list}}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 5}}} & ::= & {\mathsf{l}^\ast}~\mathbb{N} \\ +& {\mathit{notation{\kern-0.1em\scriptstyle 6}}} & ::= & {\mathbb{T}^\ast}~\mathbb{N} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 1}}}(\mathsf{v{\scriptstyle 1}}~{\mathit{opt}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 1}}}(\mathsf{v{\scriptstyle 1}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 1}}}(\mathsf{v{\scriptstyle 1}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 1}}}(\mathsf{v{\scriptstyle 1}}~\mathsf{o}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 2}}}(\mathsf{v{\scriptstyle 2}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 2}}}(\mathsf{v{\scriptstyle 2}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 2}}}(\mathsf{v{\scriptstyle 2}}~\mathsf{o}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 3}}}(\mathsf{v{\scriptstyle 3}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 3}}}(\mathsf{v{\scriptstyle 3}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 3}}}(\mathsf{v{\scriptstyle 3}}~\mbox{‘\texttt{}’}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~{\mathit{list}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~\mathsf{l}~\mathsf{l}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~({}[])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~({}[\mathsf{l}])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 4}}}(\mathsf{v{\scriptstyle 4}}~({}[\mathsf{l}~\mathsf{l}~\mathsf{l}])~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~\mathsf{l}~\mathsf{l}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~({}[])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~({}[\mathsf{l}])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 5}}}(\mathsf{v{\scriptstyle 5}}~({}[\mathsf{l}~\mathsf{l}~\mathsf{l}])~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~\epsilon~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~\mbox{‘\texttt{}’}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~({}[])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~({}[\mbox{‘\texttt{}’}])~0) & = & 0 \\ +{\mathrm{testemptyv{\kern-0.1em\scriptstyle 6}}}(\mathsf{v{\scriptstyle 6}}~({}[\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}])~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 1}}}({\mathit{opt}}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 1}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 1}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 1}}}(\mathsf{o}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 2}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 2}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 2}}}(\mathsf{o}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 3}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 3}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 3}}}(\mbox{‘\texttt{}’}~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}({\mathit{list}}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(\mathsf{l}~\mathsf{l}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(({}[])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(({}[\mathsf{l}])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 4}}}(({}[\mathsf{l}~\mathsf{l}~\mathsf{l}])~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(\mathsf{l}~\mathsf{l}~\mathsf{l}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(({}[])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(({}[\mathsf{l}])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 5}}}(({}[\mathsf{l}~\mathsf{l}~\mathsf{l}])~0) & = & 0 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(\epsilon~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(\mbox{‘\texttt{}’}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}({}[]~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}({}[\mbox{‘\texttt{}’}]~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}({}[\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}]~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(({}[])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(({}[\mbox{‘\texttt{}’}])~0) & = & 0 \\ +{\mathrm{testemptyn{\kern-0.1em\scriptstyle 6}}}(({}[\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}~\mbox{‘\texttt{}’}])~0) & = & 0 \\ +\end{array} +$$ + +\vspace{1ex} + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{\mathrm{fnest}}({({n^{i= 0) /\ (i <= 255)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax uN{N : N}(N) = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax sN{N : N}(N) = | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax iN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u8 = uN(8) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u16 = uN(16) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u31 = uN(31) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u32 = uN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u64 = uN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax s33 = sN(33) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i32 = iN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i64 = iN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i128 = iN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(32) = 23 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(64) = 52 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(32) = 8 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(64) = 11 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M{N : N}(N) = $signif(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E{N : N}(N) = $expon(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax exp = int -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) @@ -260,129 +727,129 @@ syntax fNmag{N : N}(N) = | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fN{N : N}(N) = | POS(fNmag(N)) | NEG(fNmag(N)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f32 = fN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f64 = fN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat{N : N, n : n}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone{N : N}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax vN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax v128 = vN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax char = | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) -- if (`%`_byte(ch!`%`_char.0,) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax name = | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax idx = u32 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax laneidx = u8 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax typeidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax funcidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax globalidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tableidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax memidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tagidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax elemidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax dataidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax labelidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax localidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fieldidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax externidx = | FUNC(funcidx) | GLOBAL(globalidx) @@ -390,77 +857,77 @@ syntax externidx = | MEM(memidx) | TAG(tagidx) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax free = { TYPES typeidx*, @@ -475,108 +942,108 @@ syntax free = TAGS tagidx* } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{funcidx : funcidx}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = | NULL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax numtype = | I32 | I64 | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax vectype = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax consttype = | I32 | I64 @@ -584,7 +1051,7 @@ syntax consttype = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax absheaptype = | ANY | EQ @@ -600,24 +1067,24 @@ syntax absheaptype = | NOEXTERN | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax mut = | MUT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax final = | FINAL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = | ANY | EQ @@ -636,7 +1103,7 @@ syntax heaptype = | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = | I32 | I64 @@ -646,7 +1113,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = | I32 | I64 @@ -658,56 +1125,56 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = | REC(list(syntax subtype)) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax deftype = | _DEF(rectype : rectype, n : n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax reftype = | REF(`null?` : null?, heaptype : heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Inn = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Fnn = | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Vnn = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Cnn = | I32 | I64 @@ -715,72 +1182,72 @@ syntax Cnn = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax packtype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax lanetype = | I32 | I64 @@ -789,17 +1256,17 @@ syntax lanetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Pnn = packtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Jnn = | I32 | I64 | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Lnn = | I32 | I64 @@ -808,33 +1275,33 @@ syntax Lnn = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax limits = | `[%..%]`(u64 : u64, `u64?` : u64?) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tagtype = typeuse -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax globaltype = | `%%`(`mut?` : mut?, valtype : valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax memtype = | `%%PAGE`(addrtype : addrtype, limits : limits) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tabletype = | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax datatype = | OK -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax elemtype = reftype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax externtype = | TAG(tagtype) | GLOBAL(globaltype) @@ -842,755 +1309,755 @@ syntax externtype = | TABLE(tabletype) | FUNC(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(N : N) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(N : N) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(N : N) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(32) = I32_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(64) = I64_Jnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I64_numtype) = 64 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F64_numtype) = 64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(V128_vectype) = 128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I8_packtype) = 8 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I16_packtype) = 16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize(storagetype : storagetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(nat : nat) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(nat : nat) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: Jnn) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn{vt : vectype}(vt) = $vsize(vt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn{pt : packtype}(pt) = $psize(pt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn{n : n}(n) = $inv_jsize(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack(storagetype : storagetype) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = vectype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack(storagetype : storagetype) : consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ($lunpack(lanetype) : numtype <: consttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt(reftype : reftype, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.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 } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../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-3.0/1.2-syntax.types.spectec + ;; ../../../../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*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i,))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype(tagtype : tagtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype(globaltype : globaltype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype(externtype : externtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tagtype : tagtype}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Inn : Inn}((Inn : Inn <: numtype)) = iN($sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = fN($sizenn((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{numtype : numtype}((numtype : numtype <: lanetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{packtype : packtype}((packtype : packtype <: lanetype)) = pack_(packtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{numtype : numtype}((numtype : numtype <: storagetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{vectype : vectype}((vectype : vectype <: storagetype)) = vec_(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{packtype : packtype}((packtype : packtype <: storagetype)) = pack_(packtype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sz = | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sx = | U | S -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Inn : Inn}((Inn : Inn <: numtype)) = | CLZ | CTZ @@ -1599,7 +2066,7 @@ syntax unop_(numtype : numtype) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ABS | NEG @@ -1610,9 +2077,9 @@ syntax unop_(numtype : numtype) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Inn : Inn}((Inn : Inn <: numtype)) = | ADD | SUB @@ -1628,7 +2095,7 @@ syntax binop_(numtype : numtype) | ROTR - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ADD | SUB @@ -1639,13 +2106,25 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE(sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE @@ -1655,7 +2134,7 @@ syntax relop_(numtype : numtype) | GE(sx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | EQ | NE @@ -1665,9 +2144,9 @@ syntax relop_(numtype : numtype) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) @@ -1675,14 +2154,14 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = | TRUNC(sx) | TRUNC_SAT(sx) @@ -1690,7 +2169,7 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype)) = | PROMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -1698,75 +2177,75 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax dim = | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax shape = | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax M = dim -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax ishape = | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax bshape = | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax zero = | ZERO -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax half = | LOW | HIGH -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvunop = | NOT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvbinop = | AND | ANDNOT | OR | XOR -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvternop = | BITSELECT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvtestop = | ANY_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG @@ -1774,7 +2253,7 @@ syntax vunop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG @@ -1785,9 +2264,9 @@ syntax vunop_(shape : shape) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB @@ -1809,7 +2288,7 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB @@ -1823,26 +2302,26 @@ syntax vbinop_(shape : shape) | RELAXED_MAX -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE @@ -1856,7 +2335,7 @@ syntax vrelop_(shape : shape) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE @@ -1866,22 +2345,22 @@ syntax vrelop_(shape : shape) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL | SHR(sx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) @@ -1890,26 +2369,26 @@ syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_ | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) @@ -1917,7 +2396,7 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) @@ -1925,24 +2404,24 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax memarg = { ALIGN u32, OFFSET u64 } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) @@ -1950,49 +2429,49 @@ syntax vloadop_{vectype : vectype}(vectype) = | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax blocktype = | _RESULT(valtype?) | _IDX(typeidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax addr = nat -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) | CATCH_REF(tagidx : tagidx, labelidx : labelidx) | CATCH_ALL(labelidx) | CATCH_ALL_REF(labelidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exnaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax memaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tagaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax externaddr = | TAG(tagaddr) | GLOBAL(globaladdr) @@ -2000,14 +2479,14 @@ syntax externaddr = | TABLE(tableaddr) | FUNC(funcaddr) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exportinst = { NAME name, ADDR externaddr } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax moduleinst = { TYPES deftype*, @@ -2021,16 +2500,16 @@ syntax moduleinst = EXPORTS exportinst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 syntax ref = | `REF.I31_NUM`(u31) | `REF.NULL_ADDR` @@ -2042,7 +2521,7 @@ syntax ref = | `REF.EXTERN`(ref) } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -2055,17 +2534,17 @@ syntax val = | `REF.HOST_ADDR`(hostaddr) | `REF.EXTERN`(ref) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = { LOCALS val?*, MODULE moduleinst } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -2149,6 +2628,8 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -2188,451 +2669,451 @@ syntax instr = | TRAP } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax expr = instr* -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 : memarg - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:597.1-597.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:598.1-598.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../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_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../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_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 + ;; ../../../../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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-546.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-548.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-562.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.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}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-589.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-592.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-601.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*`})) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax datamode = | ACTIVE(memidx : memidx, expr : expr) | PASSIVE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax type = | TYPE(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax tag = | TAG(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax global = | GLOBAL(globaltype : globaltype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax mem = | MEMORY(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax table = | TABLE(tabletype : tabletype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax data = | DATA(`byte*` : byte*, datamode : datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax local = | LOCAL(valtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax func = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elem = | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax start = | START(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax import = | IMPORT(name : name, name : name, externtype : externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax export = | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax module = | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type(type : type) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag{tagtype : tagtype}(TAG_tag(tagtype)) = $free_tagtype(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global(global : global) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : expr}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table(table : table) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : expr}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local(local : local) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func(func : func) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func{typeidx : typeidx, `local*` : local*, expr : expr}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start(start : start) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start{funcidx : funcidx}(START_start(funcidx)) = $free_funcidx(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import(import : import) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export(export : export) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module(module : module) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs(func*) : dataidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax init = | SET | UNSET -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax localtype = | `%%`(init : init, valtype : valtype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax instrtype = | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax context = { TYPES deftype*, @@ -2650,233 +3131,233 @@ syntax context = RECS subtype* } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypenat = | OK(nat) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{typeuse : typeuse, i : nat}(typeuse, i) = true -- otherwise -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:9.1-9.92 relation Heaptype_ok: `%|-%:OK`(context, heaptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + ;; ../../../../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) @@ -2886,266 +3367,266 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.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-3.0/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + ;; ../../../../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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.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))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Localtype_ok: `%|-%:OK`(context, localtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- if (|x*{x <- `x*`}| <= 1) @@ -3154,91 +3635,91 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) @@ -3246,232 +3727,232 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_(valtype : valtype) : val? - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{n : n, m : m, at : addrtype, N : N}: `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:5.1-5.95 relation Instr_ok: `%|-%:%`(context, instr, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -3480,7 +3961,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -3489,30 +3970,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + ;; ../../../../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*}: `%|-%:%`(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*`},))) @@ -3520,7 +4001,7 @@ 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-3.0/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) @@ -3528,7 +4009,7 @@ 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-3.0/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) @@ -3538,781 +4019,789 @@ 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-3.0/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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-3.0/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:202.1-204.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + ;; ../../../../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) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + ;; ../../../../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-3.0/2.3-validation.instructions.spectec:250.1-253.48 + ;; ../../../../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*`},))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.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)],))) -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.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([],))) -- 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-3.0/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-294.24 rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:318.1-321.44 rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:323.1-327.24 rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:456.1-459.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-3.0/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:475.1-478.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-3.0/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:485.1-488.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-3.0/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-539.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-631.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-3.0/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_(vt)}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: `%|-%CONST`(C, BINOP_instr((Inn : Inn <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_const: `%|-%CONST`(context, expr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Mem_ok: `%|-%:%`(context, mem, memtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Defaultable: `|-%DEFAULTABLE`(t,) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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]) -- 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*`},)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_idx.0] = jt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_idx.0] = gt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_idx.0] = mt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_idx.0] = tt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec syntax nonfuncs = | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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*}: `|-%:%`(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'*`}) @@ -4336,1028 +4825,1055 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed4 = | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_(numtype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = (i : nat <:> int) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = (i : int <:> nat) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx(storagetype : storagetype) : sx? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(false) = 0 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(true) = 1 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $truncz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ceilz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = 0 -- if (i < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_(N : N, int : int) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = i -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ictz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ipopcnt_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 <= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 > i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 >= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 < i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inot_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irev_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fne_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $flt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fle_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fge_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : num_($lunpack((packtype : packtype <: lanetype)))}((packtype : packtype <: lanetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_(($cunpack(storagetype) : consttype <: storagetype))) : lit_(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{consttype : consttype, c : lit_(($cunpack((consttype : consttype <: storagetype)) : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : lit_(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype))}((packtype : packtype <: storagetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : lane_((packtype : packtype <: lanetype))}((packtype : packtype <: lanetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_(($cunpack(storagetype) : consttype <: storagetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : lit_((packtype : packtype <: storagetype))}((packtype : packtype <: storagetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEG_unop_, f) = $fneg_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SQRT_unop_, f) = $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), CEIL_unop_, f) = $fceil_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), FLOOR_unop_, f) = $ffloor_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), TRUNC_unop_, f) = $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEAREST_unop_, f) = $fnearest_($sizenn((Fnn : Fnn <: numtype)), f) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ADD_binop_, f_1, f_2) = $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SUB_binop_, f_1, f_2) = $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MUL_binop_, f_1, f_2) = $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), DIV_binop_, f_1, f_2) = $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MIN_binop_, f_1, f_2) = $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MAX_binop_, f_1, f_2) = $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), COPYSIGN_binop_, f_1, f_2) = $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), EQ_relop_, f_1, f_2) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NE_relop_, f_1, f_2) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LT_relop_, f_1, f_2) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GT_relop_, f_1, f_2) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LE_relop_, f_1, f_2) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GE_relop_, f_1, f_2) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), PROMOTE_cvtop__, f_1) = $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), DEMOTE_cvtop__, f_1) = $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) + +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(HIGH_half, i, j) = j -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn), v_3 : vec_(Vnn)}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) @@ -5365,40 +5881,40 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) @@ -5406,23 +5922,23 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) @@ -5430,57 +5946,57 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax num = | CONST(numtype : numtype, num_(numtype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostfunc = | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funccode = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax taginst = { TYPE tagtype } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globalinst = { TYPE globaltype, VALUE val } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax meminst = { TYPE memtype, BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableinst = { TYPE tabletype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcinst = { TYPE deftype, @@ -5488,24 +6004,24 @@ syntax funcinst = CODE funccode } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax datainst = { BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax eleminst = { TYPE elemtype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax packval = | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -5519,28 +6035,28 @@ syntax fieldval = | `REF.EXTERN`(ref) | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exninst = { TAG tagaddr, FIELDS val* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax store = { TAGS taginst*, @@ -5555,296 +6071,296 @@ syntax store = EXNS exninst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax state = | `%;%`(store : store, frame : frame) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax config = | `%;%`(state : state, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki : nat - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki = 1024 -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_(storagetype : storagetype, val : val) : fieldval - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : num_(I32_numtype)}((packtype : packtype <: storagetype), CONST_val(I32_numtype, i)) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : iN($psizenn(packtype))}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, $extend__($psize(packtype), 32, sx, i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst(state : state) : moduleinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : u64}(tableinst, n, r) = tableinst' -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) @@ -5852,9 +6368,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) @@ -5862,79 +6378,79 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostcallresult = | RES(store : store, result : result) | BOT -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(result : result) : instr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(TRAP_result) = [TRAP_instr] -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_(nt)}: `%|-%:%`(s, CONST_num(nt, c), nt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_(vt)}: `%|-%:%`(s, VCONST_vec(vt, c), vt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.36 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -5942,72 +6458,72 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Val_ok: `%|-%:%`(store, val, valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: `%|-%:%`(s, PACK_packval(pt, c), pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + ;; ../../../../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)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -6015,653 +6531,663 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-true`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-false`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_labelidx.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-true`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-false`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[i!`%`_num_.0])]) -- if (i!`%`_num_.0 < |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.i31`{i : num_(I32_numtype)}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_(nt), unop : unop_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_(nt), testop : testop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (c = $testop_(nt, testop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), relop : relop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (c = $relop_(nt, relop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), c : num_(nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), vvbinop : vvbinop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), vvternop : vvternop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (c = $inez_($vsize(V128_vectype), c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_(V128_Vnn), i : num_(I32_numtype), sh : ishape, vshiftop : vshiftop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, i)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_(V128_Vnn), sh : ishape, c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (c = $vbitmaskop_(sh, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, swizzlop : vswizzlop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, `i*` : laneidx*, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_(V128_Vnn), sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(K)*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6669,23 +7195,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6693,312 +7219,312 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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-3.0/4.3-execution.instructions.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.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) @@ -7006,7 +7532,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-3.0/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:184.1-190.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) @@ -7014,7 +7540,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-3.0/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -7022,167 +7548,167 @@ 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-3.0/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:320.1-321.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:333.1-334.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-365.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) -- if (ti = $growtable($table(z, x), n, ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:428.1-429.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.60 rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.29 rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.63 rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-542.31 rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.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-3.0/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) -- if (mi = $growmem($mem(z, x), n)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:630.1-631.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:707.1-711.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:795.1-797.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) -- if (type = TYPE_type(rectype)) @@ -7190,160 +7716,160 @@ def $alloctypes(type*) : deftype* -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- if ((s_1, ja) = $alloctag(s, tagtype)) -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- if ((s_1, ma) = $allocmem(s, memtype)) -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) @@ -7370,56 +7896,56 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) @@ -7427,9 +7953,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} @@ -7450,32 +7976,32 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax nopt = u32* -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax idctxt = { TYPES name?*, @@ -7492,23 +8018,23 @@ syntax idctxt = TYPEDEFS deftype?* } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax I = idctxt -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I,) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) @@ -7524,10 +8050,10 @@ relation Idctxt_ok: `|-%:OK`(idctxt,) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec syntax decl = | TYPE(rectype) | IMPORT(name : name, name : name, externtype : externtype) @@ -7541,171 +8067,171 @@ syntax decl = | START(funcidx) | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:272.1-272.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:276.1-276.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:280.1-280.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:284.1-284.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:288.1-288.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:292.1-292.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:296.1-296.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:300.1-300.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:304.1-304.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:308.1-308.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:312.1-312.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) - ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + ;; ../../../../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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) @@ -7724,42 +8250,42 @@ relation Context_ok: `|-%:OK`(context,) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule unset{s : store, t : valtype}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exportinst_ok: `%|-%:OK`(store, exportinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:14.1-17.43 rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/7.1-soundness.configurations.spectec:20.1-26.42 + ;; ../../../../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*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) @@ -7808,18 +8334,18 @@ relation Instr_ok2: `%;%|-%:%`(store, 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-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:28.1-30.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Ref_ok: `%|-%:%`(s, ref, rt) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:32.1-35.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:37.1-42.35 rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) -- Frame_ok: `%|-%:%`(s, f, C') @@ -7827,86 +8353,86 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:44.1-47.49 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:49.1-51.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:5.1-6.36 relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:54.1-55.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:57.1-61.86 rule seq{s : store, 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*}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:63.1-67.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:70.1-73.33 rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:7.1-8.36 relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:76.1-78.44 rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `mut?` : mut?, t : valtype, val : val}: `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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) @@ -7914,81 +8440,81 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exninst_ok: `%|-%:OK`(store, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + ;; ../../../../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}: `%>>_%%`(`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-3.0/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true -- otherwise -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store,) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: `|-%:OK`(s,) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} @@ -8006,80 +8532,80 @@ relation Store_ok: `|-%:OK`(store,) -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_taginst: `%<=%`(taginst, taginst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- 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?*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_exninst: `%<=%`(exninst, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, s' : store}: `%<=%`(s, s') -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} @@ -8093,43 +8619,43 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, C : context}: `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s,) -- Frame_ok: `%|-%:%`(s, f, C) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Config_ok: `|-%:%`(config, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) -- State_ok: `|-%:%`(`%;%`_state(s, f), C) -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax A = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax B = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax sym = | _FIRST(A) | _DOTS | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax symsplit = | _FIRST(A) | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax recorddots = () -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax record = { FIELD_1 A, @@ -8137,22 +8663,22 @@ syntax record = `...` recorddots } -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax pth = | PTHSYNTAX -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec syntax T = nat -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingScheme: `%`(nat,) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: `%`(conclusion,) -- NotationTypingPremise: `%`(premise_1,) @@ -8160,3698 +8686,3714 @@ relation NotationTypingScheme: `%`(nat,) -- NotationTypingPremisedots: `...` -- NotationTypingPremise: `%`(premise_n,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec relation NotationReduct: `~>%`(instr*,) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 4{q_6 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $instrdots : instr* -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax callframe = | `FRAME_%{%}`(n : n, frame : frame) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:33.1-33.57 def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec syntax symdots = | `%`(i : nat,) -- if (i = 0) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var{syntax X}(syntax X) = 0 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax abbreviated = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax expanded = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax syntax = () -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:10.5-10.83 prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:11.5-11.82 prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:14.5-14.87 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:15.5-15.101 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:16.5-16.82 prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : sN(33)} ``:BsN(33) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(32)} ``:BfN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(64)} ``:BfN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfieldidx : fieldidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{l : labelidx} l:Bu32 => l -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7F => I32_numtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7B => V128_vectype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x74 => NOEXN_heaptype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x01 => ?(MUT_mut) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x78 => I8_packtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x03 => (?(NULL_null), ?(NULL_null)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:9.5-9.16 prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:10.5-10.17 prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:11.5-11.19 prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:47.5-47.60 prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:49.5-49.67 prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:50.5-50.41 prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:51.5-51.48 prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:52.5-52.81 prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:53.5-53.37 prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:54.5-54.41 prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:55.5-56.100 prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + ;; ../../../../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-3.0/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.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-3.0/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.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-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.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-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.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-3.0/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:428.5-428.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:438.5-438.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:503.5-503.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:512.5-512.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:526.5-526.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:532.5-532.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:536.5-536.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:540.5-540.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:546.5-546.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:550.5-550.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:579.5-579.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:606.5-606.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:610.5-610.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:632.5-632.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:640.5-640.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:645.5-645.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:650.5-650.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:671.5-671.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:681.5-681.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:682.5-682.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:689.5-689.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:693.5-693.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:698.5-698.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:725.5-725.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:741.5-741.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:742.5-742.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:769.5-769.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:770.5-770.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:792.5-792.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.5-793.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod eps => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{Bname} {Bbyte*{}}} => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{qt : rectype} qt:Brectype => TYPE_type(qt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod 0x00 => REF_reftype(?(), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tchar*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x21 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x23 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x24 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x25 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x26 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x27 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2B => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x40 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x60 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7E => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x39 => 9 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x66 => 15 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:22.1-24.46 grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:23.5-23.21 prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:24.5-24.46 prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tchar => c -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\t" => `%`_char(9,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\n" => `%`_char(10,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\r" => `%`_char(13,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\"" => `%`_char(34,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\'" => `%`_char(39,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\\" => `%`_char(92,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Treserved => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tname => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:56.1-57.26 grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:57.5-57.26 prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:60.1-64.18 grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : text} ``:"" => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tblockcomment => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x09 => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:32.1-33.41 grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:33.5-33.41 prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:69.1-70.41 grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:70.5-70.41 prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "-" => - (1 : nat <:> int) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:18.1-20.40 grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:19.5-19.18 prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:20.5-20.40 prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:38.1-40.48 grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:39.5-39.26 prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:40.5-40.48 prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:42.1-44.54 grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:43.5-43.29 prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:44.5-44.54 prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Tfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Thexfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "nan" => NAN_fNmag($canon_(N),) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(8)} ``:TuN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(32)} ``:TuN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(64)} ``:TuN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(8)} ``:TiN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(16)} ``:TiN(16) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(32)} ``:TiN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(32)} ``:TfN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(64)} ``:TfN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f64" => F64_numtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "v128" => V128_vectype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noextern" => NOEXTERN_heaptype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "null" => NULL_null -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i16" => I16_packtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "final" => FINAL_final -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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') -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_addrtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec + ;; ../../../../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 []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tfoldedinstr_(I : I) : instr* -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Talign_(N : N) : u32 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u32(N,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.is_null" => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.eq" => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_u" => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "array.len" => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:15.1-17.29 grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:16.5-16.29 prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:17.5-17.29 prod{in : instr} in:Tblockinstr_(I) => in -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:23.1-24.52 grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:20.5-20.27 prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:63.5-67.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:68.5-72.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:73.5-79.71 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:80.5-85.35 prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Toffsetexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) -- Idctxt_ok: `|-%:OK`(I',) @@ -11868,50 +12410,50 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () == IL Validation... diff --git a/spectec/test-interpreter/TEST.md b/spectec/test-interpreter/TEST.md index 8ddce4a343..6b9f1744c2 100644 --- a/spectec/test-interpreter/TEST.md +++ b/spectec/test-interpreter/TEST.md @@ -37,7 +37,7 @@ spectec 0.5 generator == Interpreting... - print_i32: 10 == Complete. -$ for v in 1 2; do ( \ +$ 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 @@ -105,9 +105,7 @@ spectec 0.5 generator - print_i32: 2 - print: () == Complete. -$ echo "Running test for Wasm latest..." && \ -> ../src/exe-spectec/main.exe ../../../_specification/wasm-latest/*.spectec -v -l --test-version 3 --interpreter ../test-interpreter/spec-test-3 2>&1 -Running test for Wasm latest... +Running test for Wasm 3.0... spectec 0.5 generator == Parsing... == Elaboration... @@ -136,5 +134,8 @@ spectec 0.5 generator - print_i32: 1 - print_i32: 2 - print: () +../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 +- Test failed at ../test-interpreter/spec-test-3/wide-arithmetic.wast:25.1-28.44 (Algorithm not found: WIDEOP (interpreting CaseV(WIDEOP, [CaseV(I64, []), CaseV(ADD128, [])]) at )) +Test failed for ../test-interpreter/spec-test-3/wide-arithmetic.wast == Complete. ``` diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 31adb20429..b91ca0957e 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -2354,7 +2354,7 @@ $$ # Preview ```sh -$ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec --latex) +$ (../src/exe-spectec/main.exe ../../../../specification/wasm-latest/*.spectec --latex) $$ \begin{array}[t]{@{}lrrl@{}l@{}} & N & ::= & 0 ~~|~~ 1 ~~|~~ 2 ~~|~~ \dots \\ @@ -3686,6 +3686,19 @@ $$ \end{array} $$ +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {{\mathit{wideop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{add{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ +& & | & \mathsf{sub{\scriptstyle 128}} & \quad \mbox{if}~ N = 64 \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lrrl@{}l@{}} +& {{\mathit{extwideop}}}_{{\mathsf{i}}{N}} & ::= & {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}} & \quad \mbox{if}~ N = 64 \\ +\end{array} +$$ + $$ \begin{array}[t]{@{}lrrl@{}l@{}} & {{\mathit{testop}}}_{{\mathsf{i}}{N}} & ::= & \mathsf{eqz} \\ @@ -3983,6 +3996,8 @@ $$ & & | & {\mathit{numtype}} {.} {{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}_1 {.} {{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ +& & | & {\mathit{numtype}} {.} {{\mathit{wideop}}}_{{\mathit{numtype}}} \\ +& & | & {\mathit{numtype}} {.} {{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{vectype}}{.}\mathsf{const}~{{\mathit{vec}}}_{{\mathit{vectype}}} \\ & & | & {\mathit{vectype}} {.} {\mathit{vvunop}} \\ & & | & {\mathit{vectype}} {.} {\mathit{vvbinop}} \\ @@ -7092,6 +7107,26 @@ C \vdash {\mathit{nt}}_1 {.} {{\mathit{cvtop}}}{\mathsf{\_}}{{\mathit{nt}}_2} : \end{array} $$ +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +C \vdash {\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} +} \, {[\textsc{\scriptsize T{-}instr{-}wideop}]} +\qquad +\end{array} +$$ + +$$ +\begin{array}{@{}c@{}}\displaystyle +\frac{ +}{ +C \vdash {\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}} : {\mathit{nt}}~{\mathit{nt}} \rightarrow {\mathit{nt}}~{\mathit{nt}} +} \, {[\textsc{\scriptsize T{-}instr{-}extwideop}]} +\qquad +\end{array} +$$ + \vspace{1ex} $$ @@ -8421,6 +8456,54 @@ $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(N, i_1, i_2) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{ior}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_1)}, {{\mathrm{ishl}}}_{N}({{{{\mathrm{iextend}}}_{N, N}^{\mathsf{u}}}}{(i_2)}, N)) \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(N, i_1) & = & ({{\mathrm{wrap}}}_{N, N}(i_1), {{\mathrm{wrap}}}_{N, N}({{\mathrm{ishr}}}{\mathsf{u}}{{}_{N}(i_1, N)})) \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{add{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{iadd}}}_{N}(i_1, i_2) \\ +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(N, \mathsf{sub{\scriptstyle 128}}, i_1, i_2) & = & {{\mathrm{isub}}}_{N}(i_1, i_2) \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{wideop}}}_{{\mathsf{i}}{N}, {\mathit{wideop}}}(i_1, i_2, i_3, i_4) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{wideop}}}_{{\mathsf{i}}{N}}(128, {\mathit{wideop}}, {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_1, i_2), {{\mathrm{iconcat}}}_{{\mathsf{i}}{N}}(128, i_3, i_4))) \\ +\end{array} +} \\ +\end{array} +$$ + +$$ +\begin{array}[t]{@{}lcl@{}l@{}} +{{\mathrm{extwideop}}}_{{\mathsf{i}}{N}, {\mathsf{mul\_wide}}{\mathsf{\_}}{{\mathit{sx}}}}(i_1, i_2) & = & & \\ + \multicolumn{4}{@{}l@{}}{\quad +\begin{array}[t]{@{}l@{}} +{{\mathrm{isplit}}}_{{\mathsf{i}}{N}}(128, {{\mathrm{imul}}}_{128}({{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_1)}, {{{{\mathrm{iextend}}}_{128, N}^{{\mathit{sx}}}}}{(i_2)})) \\ +\end{array} +} \\ +\end{array} +$$ + +\vspace{1ex} + $$ \begin{array}[t]{@{}lcl@{}l@{}} {\mathrm{zeroop}}({{{\mathsf{i}}{N}}_1}{\mathsf{x}}{M_1}, {{{\mathsf{i}}{N}}_2}{\mathsf{x}}{M_2}, {\mathsf{extend}}{\mathsf{\_}}{{\mathit{half}}}{\mathsf{\_}}{{\mathit{sx}}}) & = & \epsilon \\ @@ -10871,6 +10954,15 @@ $$ \vspace{1ex} +$$ +\begin{array}[t]{@{}lrcl@{}l@{}} +{[\textsc{\scriptsize E{-}wideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}}{.}\mathsf{const}~c_3)~({\mathit{nt}}{.}\mathsf{const}~c_4)~({\mathit{nt}} {.} {\mathit{wideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{wideop}}}_{{\mathit{nt}}, {\mathit{wideop}}_{\mathit{nt}}}(c_1, c_2, c_3, c_4) \\ +{[\textsc{\scriptsize E{-}extwideop}]} \quad & ({\mathit{nt}}{.}\mathsf{const}~c_1)~({\mathit{nt}}{.}\mathsf{const}~c_2)~({\mathit{nt}} {.} {\mathit{extwideop}}_{\mathit{nt}}) & \hookrightarrow & ({\mathit{nt}}{.}\mathsf{const}~c_5)~({\mathit{nt}}{.}\mathsf{const}~c_6) & \quad \mbox{if}~ (c_5, c_6) \in {{\mathrm{extwideop}}}_{{\mathit{nt}}, {\mathit{extwideop}}_{\mathit{nt}}}(c_1, c_2) \\ +\end{array} +$$ + +\vspace{1ex} + $$ \begin{array}[t]{@{}lrcl@{}l@{}} {[\textsc{\scriptsize E{-}vvunop}]} \quad & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c_1)~(\mathsf{v{\scriptstyle 128}} {.} {\mathit{vvunop}}) & \hookrightarrow & (\mathsf{v{\scriptstyle 128}}{.}\mathsf{const}~c) & \quad \mbox{if}~ c \in {{\mathit{vvunop}}}{{}_{\mathsf{v{\scriptstyle 128}}}(c_1)} \\ @@ -11921,6 +12013,10 @@ $$ & & | & \mathtt{0xFC}~~5{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 32}}} \\ & & | & \mathtt{0xFC}~~6{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{s}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mathtt{0xFC}~~7{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {{\mathsf{trunc\_sat}}{\mathsf{\_}}{\mathsf{u}}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ +& & | & \mathtt{0xFC}~~13{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{add{\scriptstyle 128}} \\ +& & | & \mathtt{0xFC}~~14{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub{\scriptstyle 128}} \\ +& & | & \mathtt{0xFC}~~15{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{s}} \\ +& & | & \mathtt{0xFC}~~16{:}{\mathtt{u32}} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{u}} \\ \end{array} $$ @@ -13370,6 +13466,10 @@ $$ & & | & \mbox{‘\texttt{i64.reinterpret\_f64}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{f{\scriptstyle 64}}} \\ & & | & \mbox{‘\texttt{f32.reinterpret\_i32}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 32}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 32}}} \\ & & | & \mbox{‘\texttt{f64.reinterpret\_i64}’} & \quad\Rightarrow\quad{} & \mathsf{f{\scriptstyle 64}} {.} {\mathsf{reinterpret}}{\mathsf{\_}}{\mathsf{i{\scriptstyle 64}}} \\ +& & | & \mbox{‘\texttt{i64.add128}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{add{\scriptstyle 128}} \\ +& & | & \mbox{‘\texttt{i64.sub128}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} \mathsf{sub{\scriptstyle 128}} \\ +& & | & \mbox{‘\texttt{i64.mul\_wide\_s}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{s}} \\ +& & | & \mbox{‘\texttt{i64.mul\_wide\_u}’} & \quad\Rightarrow\quad{} & \mathsf{i{\scriptstyle 64}} {.} {\mathsf{mul\_wide}}{\mathsf{\_}}{\mathsf{u}} \\ \end{array} $$ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index d4e43c49ac..d7cecc40a7 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -1,246 +1,246 @@ # Preview ```sh -$ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec -l --print-all-il --print-no-pos --all-passes --check) +$ (../src/exe-spectec/main.exe ../../../../specification/wasm-latest/*.spectec -l --print-all-il --print-no-pos --all-passes --check) == Parsing... == Elaboration... -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax K = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax n = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax m = nat -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min(nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = i -- if (i <= j) - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = j -- otherwise -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:9.1-9.56 def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:10.1-10.18 def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:11.1-11.35 def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:13.1-13.57 def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:14.1-14.19 def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:15.1-15.37 def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_(syntax X, X*) : X? - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X}(syntax X, []) = ?() - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:14.1-14.82 def $concat_(syntax X, X**) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:15.1-15.34 def $concat_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:16.1-16.64 def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:18.1-18.89 def $concatn_(syntax X, X**, nat : nat) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:20.1-20.73 def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_(syntax X, X?*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concat_(syntax X, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concatn_(syntax X, nat : nat, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:35.1-35.78 def $disjoint_(syntax X, X*) : bool - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:36.1-36.37 def $disjoint_{syntax X}(syntax X, []) = true - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:37.1-37.68 def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:40.1-40.38 def $setminus1_(syntax X, X : X, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:44.1-44.38 def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:45.1-45.78 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = [] -- if (w = w_1) - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:46.1-46.77 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:46.1-46.77 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = $setminus1_(syntax X, w, w'*{w' <- `w'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:39.1-39.56 def $setminus_(syntax X, X*, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:42.1-42.40 def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:43.1-43.90 def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:51.1-51.46 def $setproduct2_(syntax X, X : X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:57.1-57.44 def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:58.1-58.90 def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:50.1-50.47 def $setproduct1_(syntax X, X*, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:55.1-55.46 def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:56.1-56.107 def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:49.1-49.84 def $setproduct_(syntax X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:53.1-53.40 def $setproduct_{syntax X}(syntax X, []) = [[]] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:54.1-54.90 def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) } -;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +;; ../../../../specification/wasm-latest/1.0-syntax.profiles.spectec def $ND : bool -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax bit = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax byte = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax uN{N : N}(N) = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax sN{N : N}(N) = | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax iN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u8 = uN(8) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u16 = uN(16) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u31 = uN(31) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u32 = uN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u64 = uN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax s33 = sN(33) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i32 = iN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i64 = iN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i128 = iN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(32) = 23 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(64) = 52 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(32) = 8 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(64) = 11 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M{N : N}(N) = $signif(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E{N : N}(N) = $expon(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax exp = int -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) @@ -250,129 +250,129 @@ syntax fNmag{N : N}(N) = | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fN{N : N}(N) = | POS(fNmag(N)) | NEG(fNmag(N)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f32 = fN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f64 = fN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat{N : N, n : n}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone{N : N}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax vN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax v128 = vN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax char = | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) -- if (`%`_byte(ch!`%`_char.0,) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax name = | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax idx = u32 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax laneidx = u8 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax typeidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax funcidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax globalidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tableidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax memidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tagidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax elemidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax dataidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax labelidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax localidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fieldidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax externidx = | FUNC(funcidx) | GLOBAL(globalidx) @@ -380,77 +380,77 @@ syntax externidx = | MEM(memidx) | TAG(tagidx) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax free = { TYPES typeidx*, @@ -465,108 +465,108 @@ syntax free = TAGS tagidx* } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{funcidx : funcidx}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = | NULL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax numtype = | I32 | I64 | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax vectype = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax consttype = | I32 | I64 @@ -574,7 +574,7 @@ syntax consttype = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax absheaptype = | ANY | EQ @@ -590,24 +590,24 @@ syntax absheaptype = | NOEXTERN | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax mut = | MUT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax final = | FINAL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = | ANY | EQ @@ -626,7 +626,7 @@ syntax heaptype = | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = | I32 | I64 @@ -636,7 +636,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = | I32 | I64 @@ -648,56 +648,56 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = | REC(list(syntax subtype)) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax deftype = | _DEF(rectype : rectype, n : n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax reftype = | REF(`null?` : null?, heaptype : heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Inn = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Fnn = | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Vnn = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Cnn = | I32 | I64 @@ -705,72 +705,72 @@ syntax Cnn = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax packtype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax lanetype = | I32 | I64 @@ -779,17 +779,17 @@ syntax lanetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Pnn = packtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Jnn = | I32 | I64 | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Lnn = | I32 | I64 @@ -798,33 +798,33 @@ syntax Lnn = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax limits = | `[%..%]`(u64 : u64, `u64?` : u64?) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tagtype = typeuse -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax globaltype = | `%%`(`mut?` : mut?, valtype : valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax memtype = | `%%PAGE`(addrtype : addrtype, limits : limits) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tabletype = | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax datatype = | OK -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax elemtype = reftype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax externtype = | TAG(tagtype) | GLOBAL(globaltype) @@ -832,755 +832,755 @@ syntax externtype = | TABLE(tabletype) | FUNC(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(N : N) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(N : N) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(N : N) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(32) = I32_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(64) = I64_Jnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I64_numtype) = 64 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F64_numtype) = 64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(V128_vectype) = 128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I8_packtype) = 8 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I16_packtype) = 16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize(storagetype : storagetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(nat : nat) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(nat : nat) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ($inv_isize(n) : Inn <: Jnn) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn{vt : vectype}(vt) = $vsize(vt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn{pt : packtype}(pt) = $psize(pt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn{n : n}(n) = $inv_jsize(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack(storagetype : storagetype) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = vectype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack(storagetype : storagetype) : consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_consttype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ($lunpack(lanetype) : numtype <: consttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt(reftype : reftype, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.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 } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../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-3.0/1.2-syntax.types.spectec + ;; ../../../../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*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i,))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype(tagtype : tagtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype(globaltype : globaltype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype(externtype : externtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tagtype : tagtype}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Inn : Inn}((Inn : Inn <: numtype)) = iN($sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = fN($sizenn((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{numtype : numtype}((numtype : numtype <: lanetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{packtype : packtype}((packtype : packtype <: lanetype)) = pack_(packtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{numtype : numtype}((numtype : numtype <: storagetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{vectype : vectype}((vectype : vectype <: storagetype)) = vec_(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{packtype : packtype}((packtype : packtype <: storagetype)) = pack_(packtype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sz = | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sx = | U | S -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Inn : Inn}((Inn : Inn <: numtype)) = | CLZ | CTZ @@ -1589,7 +1589,7 @@ syntax unop_(numtype : numtype) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ABS | NEG @@ -1600,9 +1600,9 @@ syntax unop_(numtype : numtype) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Inn : Inn}((Inn : Inn <: numtype)) = | ADD | SUB @@ -1618,7 +1618,7 @@ syntax binop_(numtype : numtype) | ROTR - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ADD | SUB @@ -1629,13 +1629,25 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE(sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE @@ -1645,7 +1657,7 @@ syntax relop_(numtype : numtype) | GE(sx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | EQ | NE @@ -1655,9 +1667,9 @@ syntax relop_(numtype : numtype) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) @@ -1665,14 +1677,14 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = | TRUNC(sx) | TRUNC_SAT(sx) @@ -1680,7 +1692,7 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype)) = | PROMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -1688,75 +1700,75 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax dim = | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax shape = | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax M = dim -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax ishape = | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax bshape = | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax zero = | ZERO -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax half = | LOW | HIGH -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvunop = | NOT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvbinop = | AND | ANDNOT | OR | XOR -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvternop = | BITSELECT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvtestop = | ANY_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG @@ -1764,7 +1776,7 @@ syntax vunop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG @@ -1775,9 +1787,9 @@ syntax vunop_(shape : shape) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB @@ -1799,7 +1811,7 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB @@ -1813,26 +1825,26 @@ syntax vbinop_(shape : shape) | RELAXED_MAX -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE @@ -1846,7 +1858,7 @@ syntax vrelop_(shape : shape) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE @@ -1856,22 +1868,22 @@ syntax vrelop_(shape : shape) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL | SHR(sx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) @@ -1880,26 +1892,26 @@ syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_ | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) @@ -1907,7 +1919,7 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) @@ -1915,24 +1927,24 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax memarg = { ALIGN u32, OFFSET u64 } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) @@ -1940,49 +1952,49 @@ syntax vloadop_{vectype : vectype}(vectype) = | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax blocktype = | _RESULT(valtype?) | _IDX(typeidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax addr = nat -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) | CATCH_REF(tagidx : tagidx, labelidx : labelidx) | CATCH_ALL(labelidx) | CATCH_ALL_REF(labelidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exnaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax memaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tagaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax externaddr = | TAG(tagaddr) | GLOBAL(globaladdr) @@ -1990,14 +2002,14 @@ syntax externaddr = | TABLE(tableaddr) | FUNC(funcaddr) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exportinst = { NAME name, ADDR externaddr } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax moduleinst = { TYPES deftype*, @@ -2011,16 +2023,16 @@ syntax moduleinst = EXPORTS exportinst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 syntax ref = | `REF.I31_NUM`(u31) | `REF.NULL_ADDR` @@ -2032,7 +2044,7 @@ syntax ref = | `REF.EXTERN`(ref) } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -2045,17 +2057,17 @@ syntax val = | `REF.HOST_ADDR`(hostaddr) | `REF.EXTERN`(ref) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = { LOCALS val?*, MODULE moduleinst } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -2139,6 +2151,8 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -2178,451 +2192,451 @@ syntax instr = | TRAP } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax expr = instr* -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 : memarg - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:597.1-597.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:598.1-598.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../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_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../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_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 + ;; ../../../../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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-546.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-548.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-562.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.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}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-589.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-592.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-601.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*`})) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax datamode = | ACTIVE(memidx : memidx, expr : expr) | PASSIVE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax type = | TYPE(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax tag = | TAG(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax global = | GLOBAL(globaltype : globaltype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax mem = | MEMORY(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax table = | TABLE(tabletype : tabletype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax data = | DATA(`byte*` : byte*, datamode : datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax local = | LOCAL(valtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax func = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elem = | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax start = | START(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax import = | IMPORT(name : name, name : name, externtype : externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax export = | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax module = | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type(type : type) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag{tagtype : tagtype}(TAG_tag(tagtype)) = $free_tagtype(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global(global : global) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : expr}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table(table : table) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : expr}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local(local : local) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func(func : func) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func{typeidx : typeidx, `local*` : local*, expr : expr}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start(start : start) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start{funcidx : funcidx}(START_start(funcidx)) = $free_funcidx(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import(import : import) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export(export : export) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module(module : module) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs(func*) : dataidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax init = | SET | UNSET -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax localtype = | `%%`(init : init, valtype : valtype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax instrtype = | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax context = { TYPES deftype*, @@ -2640,233 +2654,233 @@ syntax context = RECS subtype* } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypenat = | OK(nat) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{typeuse : typeuse, i : nat}(typeuse, i) = true -- otherwise -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:9.1-9.92 relation Heaptype_ok: `%|-%:OK`(context, heaptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + ;; ../../../../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) @@ -2876,266 +2890,266 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.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-3.0/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + ;; ../../../../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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.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))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Localtype_ok: `%|-%:OK`(context, localtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- if (|x*{x <- `x*`}| <= 1) @@ -3144,91 +3158,91 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) @@ -3236,232 +3250,232 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_(valtype : valtype) : val? - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{n : n, m : m, at : addrtype, N : N}: `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:5.1-5.95 relation Instr_ok: `%|-%:%`(context, instr, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -3470,7 +3484,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -3479,30 +3493,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + ;; ../../../../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*}: `%|-%:%`(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*`},))) @@ -3510,7 +3524,7 @@ 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-3.0/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) @@ -3518,7 +3532,7 @@ 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-3.0/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) @@ -3528,781 +3542,789 @@ 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-3.0/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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-3.0/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:202.1-204.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + ;; ../../../../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) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + ;; ../../../../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-3.0/2.3-validation.instructions.spectec:250.1-253.48 + ;; ../../../../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*`},))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.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)],))) -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.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([],))) -- 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-3.0/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-294.24 rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:318.1-321.44 rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:323.1-327.24 rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:456.1-459.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-3.0/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:475.1-478.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-3.0/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:485.1-488.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-3.0/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-539.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-631.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-3.0/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_(vt)}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: `%|-%CONST`(C, BINOP_instr((Inn : Inn <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_const: `%|-%CONST`(context, expr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Mem_ok: `%|-%:%`(context, mem, memtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Defaultable: `|-%DEFAULTABLE`(t,) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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]) -- 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*`},)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_idx.0] = jt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_idx.0] = gt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_idx.0] = mt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_idx.0] = tt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec syntax nonfuncs = | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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*}: `|-%:%`(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'*`}) @@ -4326,1028 +4348,1055 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed4 = | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_(numtype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = (i : nat <:> int) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = (i : int <:> nat) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx(storagetype : storagetype) : sx? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(false) = 0 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(true) = 1 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $truncz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ceilz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = 0 -- if (i < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_(N : N, int : int) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = i -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ictz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ipopcnt_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 <= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 > i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 >= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 < i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inot_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irev_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fne_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $flt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fle_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fge_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : num_($lunpack((packtype : packtype <: lanetype)))}((packtype : packtype <: lanetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_(($cunpack(storagetype) : consttype <: storagetype))) : lit_(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{consttype : consttype, c : lit_(($cunpack((consttype : consttype <: storagetype)) : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : lit_(($cunpack((packtype : packtype <: storagetype)) : consttype <: storagetype))}((packtype : packtype <: storagetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : lane_((packtype : packtype <: lanetype))}((packtype : packtype <: lanetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_(($cunpack(storagetype) : consttype <: storagetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : lit_((packtype : packtype <: storagetype))}((packtype : packtype <: storagetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEG_unop_, f) = $fneg_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SQRT_unop_, f) = $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), CEIL_unop_, f) = $fceil_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), FLOOR_unop_, f) = $ffloor_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), TRUNC_unop_, f) = $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEAREST_unop_, f) = $fnearest_($sizenn((Fnn : Fnn <: numtype)), f) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ADD_binop_, f_1, f_2) = $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SUB_binop_, f_1, f_2) = $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MUL_binop_, f_1, f_2) = $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), DIV_binop_, f_1, f_2) = $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MIN_binop_, f_1, f_2) = $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MAX_binop_, f_1, f_2) = $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), COPYSIGN_binop_, f_1, f_2) = $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), EQ_relop_, f_1, f_2) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NE_relop_, f_1, f_2) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LT_relop_, f_1, f_2) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GT_relop_, f_1, f_2) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LE_relop_, f_1, f_2) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GE_relop_, f_1, f_2) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), PROMOTE_cvtop__, f_1) = $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), DEMOTE_cvtop__, f_1) = $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) + +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(HIGH_half, i, j) = j -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn), v_3 : vec_(Vnn)}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) @@ -5355,40 +5404,40 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) @@ -5396,23 +5445,23 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) @@ -5420,57 +5469,57 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax num = | CONST(numtype : numtype, num_(numtype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostfunc = | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funccode = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax taginst = { TYPE tagtype } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globalinst = { TYPE globaltype, VALUE val } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax meminst = { TYPE memtype, BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableinst = { TYPE tabletype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcinst = { TYPE deftype, @@ -5478,24 +5527,24 @@ syntax funcinst = CODE funccode } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax datainst = { BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax eleminst = { TYPE elemtype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax packval = | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -5509,28 +5558,28 @@ syntax fieldval = | `REF.EXTERN`(ref) | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exninst = { TAG tagaddr, FIELDS val* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax store = { TAGS taginst*, @@ -5545,296 +5594,296 @@ syntax store = EXNS exninst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax state = | `%;%`(store : store, frame : frame) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax config = | `%;%`(state : state, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki : nat - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki = 1024 -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_(storagetype : storagetype, val : val) : fieldval - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : num_(I32_numtype)}((packtype : packtype <: storagetype), CONST_val(I32_numtype, i)) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : iN($psizenn(packtype))}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, $extend__($psize(packtype), 32, sx, i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst(state : state) : moduleinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : u64}(tableinst, n, r) = tableinst' -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) @@ -5842,9 +5891,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = meminst' -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) @@ -5852,79 +5901,79 @@ def $growmem(meminst : meminst, nat : nat) : meminst -- (if (i'!`%`_u64.0 <= j!`%`_u64.0))?{j <- `j?`} -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostcallresult = | RES(store : store, result : result) | BOT -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(result : result) : instr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(TRAP_result) = [TRAP_instr] -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_(nt)}: `%|-%:%`(s, CONST_num(nt, c), nt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_(vt)}: `%|-%:%`(s, VCONST_vec(vt, c), vt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.36 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -5932,72 +5981,72 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Val_ok: `%|-%:%`(store, val, valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: `%|-%:%`(s, PACK_packval(pt, c), pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + ;; ../../../../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)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -6005,653 +6054,663 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-true`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-false`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_labelidx.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-true`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-false`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[i!`%`_num_.0])]) -- if (i!`%`_num_.0 < |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.i31`{i : num_(I32_numtype)}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_(nt), unop : unop_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_(nt), testop : testop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (c = $testop_(nt, testop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), relop : relop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (c = $relop_(nt, relop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), c : num_(nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), vvbinop : vvbinop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), vvternop : vvternop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (c = $inez_($vsize(V128_vectype), c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_(V128_Vnn), i : num_(I32_numtype), sh : ishape, vshiftop : vshiftop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, i)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_(V128_Vnn), sh : ishape, c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (c = $vbitmaskop_(sh, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, swizzlop : vswizzlop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, `i*` : laneidx*, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_(V128_Vnn), sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(K)*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6659,23 +6718,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -6683,312 +6742,312 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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-3.0/4.3-execution.instructions.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const($cunpack(zt), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const($cunpack(zt), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.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) @@ -6996,7 +7055,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-3.0/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:184.1-190.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) @@ -7004,7 +7063,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-3.0/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -7012,167 +7071,167 @@ 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-3.0/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:320.1-321.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:333.1-334.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-365.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) -- if (ti = $growtable($table(z, x), n, ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:428.1-429.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.60 rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.29 rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.63 rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-542.31 rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.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-3.0/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) -- if (mi = $growmem($mem(z, x), n)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:630.1-631.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:707.1-711.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:795.1-797.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) -- if (type = TYPE_type(rectype)) @@ -7180,160 +7239,160 @@ def $alloctypes(type*) : deftype* -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- if ((s_1, ja) = $alloctag(s, tagtype)) -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- if ((s_1, ma) = $allocmem(s, memtype)) -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) @@ -7360,56 +7419,56 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) @@ -7417,9 +7476,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} @@ -7440,32 +7499,32 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax nopt = u32* -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax idctxt = { TYPES name?*, @@ -7482,23 +7541,23 @@ syntax idctxt = TYPEDEFS deftype?* } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax I = idctxt -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I,) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) @@ -7514,10 +7573,10 @@ relation Idctxt_ok: `|-%:OK`(idctxt,) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec syntax decl = | TYPE(rectype) | IMPORT(name : name, name : name, externtype : externtype) @@ -7531,171 +7590,171 @@ syntax decl = | START(funcidx) | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:272.1-272.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:276.1-276.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:280.1-280.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:284.1-284.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:288.1-288.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:292.1-292.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:296.1-296.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:300.1-300.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:304.1-304.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:308.1-308.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:312.1-312.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) - ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + ;; ../../../../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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) @@ -7714,42 +7773,42 @@ relation Context_ok: `|-%:OK`(context,) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule unset{s : store, t : valtype}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exportinst_ok: `%|-%:OK`(store, exportinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:14.1-17.43 rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/7.1-soundness.configurations.spectec:20.1-26.42 + ;; ../../../../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*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) @@ -7798,18 +7857,18 @@ relation Instr_ok2: `%;%|-%:%`(store, 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-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:28.1-30.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Ref_ok: `%|-%:%`(s, ref, rt) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:32.1-35.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:37.1-42.35 rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) -- Frame_ok: `%|-%:%`(s, f, C') @@ -7817,86 +7876,86 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:44.1-47.49 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:49.1-51.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:5.1-6.36 relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:54.1-55.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:57.1-61.86 rule seq{s : store, 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*}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:63.1-67.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:70.1-73.33 rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:7.1-8.36 relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:76.1-78.44 rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `mut?` : mut?, t : valtype, val : val}: `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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) @@ -7904,81 +7963,81 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exninst_ok: `%|-%:OK`(store, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + ;; ../../../../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}: `%>>_%%`(`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-3.0/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true -- otherwise -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store,) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: `|-%:OK`(s,) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} @@ -7996,80 +8055,80 @@ relation Store_ok: `|-%:OK`(store,) -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_taginst: `%<=%`(taginst, taginst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- 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?*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_exninst: `%<=%`(exninst, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, s' : store}: `%<=%`(s, s') -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} @@ -8083,43 +8142,43 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, C : context}: `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s,) -- Frame_ok: `%|-%:%`(s, f, C) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Config_ok: `|-%:%`(config, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) -- State_ok: `|-%:%`(`%;%`_state(s, f), C) -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax A = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax B = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax sym = | _FIRST(A) | _DOTS | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax symsplit = | _FIRST(A) | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax recorddots = () -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax record = { FIELD_1 A, @@ -8127,22 +8186,22 @@ syntax record = `...` recorddots } -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax pth = | PTHSYNTAX -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec syntax T = nat -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingScheme: `%`(nat,) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: `%`(conclusion,) -- NotationTypingPremise: `%`(premise_1,) @@ -8150,3698 +8209,3714 @@ relation NotationTypingScheme: `%`(nat,) -- NotationTypingPremisedots: `...` -- NotationTypingPremise: `%`(premise_n,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec relation NotationReduct: `~>%`(instr*,) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 4{q_6 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $instrdots : instr* -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax callframe = | `FRAME_%{%}`(n : n, frame : frame) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:33.1-33.57 def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec syntax symdots = | `%`(i : nat,) -- if (i = 0) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var{syntax X}(syntax X) = 0 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax abbreviated = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax expanded = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax syntax = () -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:10.5-10.83 prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:11.5-11.82 prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:14.5-14.87 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:15.5-15.101 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:16.5-16.82 prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : sN(33)} ``:BsN(33) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(32)} ``:BfN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(64)} ``:BfN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfieldidx : fieldidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{l : labelidx} l:Bu32 => l -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7F => I32_numtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7B => V128_vectype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x74 => NOEXN_heaptype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x01 => ?(MUT_mut) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x78 => I8_packtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x03 => (?(NULL_null), ?(NULL_null)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:9.5-9.16 prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:10.5-10.17 prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:11.5-11.19 prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:47.5-47.60 prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:49.5-49.67 prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:50.5-50.41 prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:51.5-51.48 prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:52.5-52.81 prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:53.5-53.37 prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:54.5-54.41 prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:55.5-56.100 prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + ;; ../../../../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-3.0/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.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-3.0/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.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-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.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-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.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-3.0/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:428.5-428.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:438.5-438.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:503.5-503.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:512.5-512.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:526.5-526.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:532.5-532.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:536.5-536.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:540.5-540.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:546.5-546.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:550.5-550.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:579.5-579.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:606.5-606.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:610.5-610.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:632.5-632.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:640.5-640.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:645.5-645.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:650.5-650.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:671.5-671.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:681.5-681.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:682.5-682.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:689.5-689.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:693.5-693.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:698.5-698.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:725.5-725.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:741.5-741.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:742.5-742.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:769.5-769.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:770.5-770.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:792.5-792.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.5-793.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod eps => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{Bname} {Bbyte*{}}} => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{qt : rectype} qt:Brectype => TYPE_type(qt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod 0x00 => REF_reftype(?(), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tchar*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x21 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x23 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x24 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x25 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x26 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x27 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2B => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x40 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x60 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7E => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x39 => 9 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x66 => 15 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:22.1-24.46 grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:23.5-23.21 prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:24.5-24.46 prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tchar => c -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\t" => `%`_char(9,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\n" => `%`_char(10,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\r" => `%`_char(13,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\"" => `%`_char(34,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\'" => `%`_char(39,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\\" => `%`_char(92,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Treserved => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tname => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:56.1-57.26 grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:57.5-57.26 prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:60.1-64.18 grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : text} ``:"" => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tblockcomment => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x09 => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:32.1-33.41 grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:33.5-33.41 prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:69.1-70.41 grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:70.5-70.41 prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "-" => - (1 : nat <:> int) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:18.1-20.40 grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:19.5-19.18 prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:20.5-20.40 prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:38.1-40.48 grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:39.5-39.26 prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:40.5-40.48 prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:42.1-44.54 grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:43.5-43.29 prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:44.5-44.54 prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Tfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Thexfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "nan" => NAN_fNmag($canon_(N),) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(8)} ``:TuN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(32)} ``:TuN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(64)} ``:TuN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(8)} ``:TiN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(16)} ``:TiN(16) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(32)} ``:TiN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(32)} ``:TfN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(64)} ``:TfN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f64" => F64_numtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "v128" => V128_vectype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noextern" => NOEXTERN_heaptype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "null" => NULL_null -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i16" => I16_packtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "final" => FINAL_final -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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') -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_addrtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec + ;; ../../../../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 []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tfoldedinstr_(I : I) : instr* -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Talign_(N : N) : u32 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u32(N,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.is_null" => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.eq" => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_u" => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "array.len" => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:15.1-17.29 grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:16.5-16.29 prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:17.5-17.29 prod{in : instr} in:Tblockinstr_(I) => in -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:23.1-24.52 grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:20.5-20.27 prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:63.5-67.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:68.5-72.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:73.5-79.71 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:80.5-85.35 prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Toffsetexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) -- Idctxt_ok: `|-%:OK`(I',) @@ -11858,291 +11933,291 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () == IL Validation... == Running pass totalize... -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax K = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax n = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax m = nat -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min(nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = i -- if (i <= j) - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = j -- otherwise -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:9.1-9.56 def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:10.1-10.18 def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:11.1-11.35 def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:13.1-13.57 def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:14.1-14.19 def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:15.1-15.37 def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_(syntax X, X*) : X? - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X}(syntax X, []) = ?() - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:14.1-14.82 def $concat_(syntax X, X**) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:15.1-15.34 def $concat_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:16.1-16.64 def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:18.1-18.89 def $concatn_(syntax X, X**, nat : nat) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:20.1-20.73 def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_(syntax X, X?*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concat_(syntax X, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concatn_(syntax X, nat : nat, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:35.1-35.78 def $disjoint_(syntax X, X*) : bool - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:36.1-36.37 def $disjoint_{syntax X}(syntax X, []) = true - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:37.1-37.68 def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:40.1-40.38 def $setminus1_(syntax X, X : X, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:44.1-44.38 def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:45.1-45.78 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = [] -- if (w = w_1) - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:46.1-46.77 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:46.1-46.77 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = $setminus1_(syntax X, w, w'*{w' <- `w'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:39.1-39.56 def $setminus_(syntax X, X*, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:42.1-42.40 def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:43.1-43.90 def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:51.1-51.46 def $setproduct2_(syntax X, X : X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:57.1-57.44 def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:58.1-58.90 def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:50.1-50.47 def $setproduct1_(syntax X, X*, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:55.1-55.46 def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:56.1-56.107 def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:49.1-49.84 def $setproduct_(syntax X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:53.1-53.40 def $setproduct_{syntax X}(syntax X, []) = [[]] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:54.1-54.90 def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) } -;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +;; ../../../../specification/wasm-latest/1.0-syntax.profiles.spectec def $ND : bool -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax bit = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax byte = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax uN{N : N}(N) = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax sN{N : N}(N) = | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax iN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u8 = uN(8) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u16 = uN(16) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u31 = uN(31) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u32 = uN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u64 = uN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax s33 = sN(33) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i32 = iN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i64 = iN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i128 = iN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(32) = 23 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(64) = 52 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(32) = 8 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(64) = 11 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M{N : N}(N) = $signif(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E{N : N}(N) = $expon(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax exp = int -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) @@ -12152,129 +12227,129 @@ syntax fNmag{N : N}(N) = | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fN{N : N}(N) = | POS(fNmag(N)) | NEG(fNmag(N)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f32 = fN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f64 = fN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat{N : N, n : n}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone{N : N}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax vN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax v128 = vN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax char = | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) -- if (`%`_byte(ch!`%`_char.0,) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax name = | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax idx = u32 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax laneidx = u8 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax typeidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax funcidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax globalidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tableidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax memidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tagidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax elemidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax dataidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax labelidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax localidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fieldidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax externidx = | FUNC(funcidx) | GLOBAL(globalidx) @@ -12282,77 +12357,77 @@ syntax externidx = | MEM(memidx) | TAG(tagidx) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax free = { TYPES typeidx*, @@ -12367,108 +12442,108 @@ syntax free = TAGS tagidx* } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{funcidx : funcidx}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = | NULL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax numtype = | I32 | I64 | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax vectype = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax consttype = | I32 | I64 @@ -12476,7 +12551,7 @@ syntax consttype = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax absheaptype = | ANY | EQ @@ -12492,24 +12567,24 @@ syntax absheaptype = | NOEXTERN | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax mut = | MUT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax final = | FINAL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = | ANY | EQ @@ -12528,7 +12603,7 @@ syntax heaptype = | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = | I32 | I64 @@ -12538,7 +12613,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = | I32 | I64 @@ -12550,56 +12625,56 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = | REC(list(syntax subtype)) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax deftype = | _DEF(rectype : rectype, n : n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax reftype = | REF(`null?` : null?, heaptype : heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Inn = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Fnn = | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Vnn = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Cnn = | I32 | I64 @@ -12607,72 +12682,72 @@ syntax Cnn = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax packtype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax lanetype = | I32 | I64 @@ -12681,17 +12756,17 @@ syntax lanetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Pnn = packtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Jnn = | I32 | I64 | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Lnn = | I32 | I64 @@ -12700,33 +12775,33 @@ syntax Lnn = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax limits = | `[%..%]`(u64 : u64, `u64?` : u64?) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tagtype = typeuse -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax globaltype = | `%%`(`mut?` : mut?, valtype : valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax memtype = | `%%PAGE`(addrtype : addrtype, limits : limits) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tabletype = | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax datatype = | OK -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax elemtype = reftype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax externtype = | TAG(tagtype) | GLOBAL(globaltype) @@ -12734,762 +12809,762 @@ syntax externtype = | TABLE(tabletype) | FUNC(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(N : N) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(N : N) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(N : N) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(32) = I32_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(64) = I64_Jnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I64_numtype) = 64 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F64_numtype) = 64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(V128_vectype) = 128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I8_packtype) = 8 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I16_packtype) = 16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize(storagetype : storagetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(nat : nat) : Inn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(32) = ?(I32_Inn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(64) = ?(I64_Inn) def $inv_isize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(8) = ?(I8_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ?((!($inv_isize(n)) : Inn <: Jnn)) def $inv_jsize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(32) = ?(F32_Fnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(64) = ?(F64_Fnn) def $inv_fsize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn{vt : vectype}(vt) = $vsize(vt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn{pt : packtype}(pt) = $psize(pt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn{n : n}(n) = ?(!($inv_jsize(n))) def $inv_jsizenn{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack(storagetype : storagetype) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) def $nunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) def $vunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack(storagetype : storagetype) : consttype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) def $cunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt(reftype : reftype, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.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 } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../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-3.0/1.2-syntax.types.spectec + ;; ../../../../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*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i,))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype(tagtype : tagtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype(globaltype : globaltype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype(externtype : externtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tagtype : tagtype}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Inn : Inn}((Inn : Inn <: numtype)) = iN($sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = fN($sizenn((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{numtype : numtype}((numtype : numtype <: lanetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{packtype : packtype}((packtype : packtype <: lanetype)) = pack_(packtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{numtype : numtype}((numtype : numtype <: storagetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{vectype : vectype}((vectype : vectype <: storagetype)) = vec_(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{packtype : packtype}((packtype : packtype <: storagetype)) = pack_(packtype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sz = | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sx = | U | S -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Inn : Inn}((Inn : Inn <: numtype)) = | CLZ | CTZ @@ -13498,7 +13573,7 @@ syntax unop_(numtype : numtype) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ABS | NEG @@ -13509,9 +13584,9 @@ syntax unop_(numtype : numtype) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Inn : Inn}((Inn : Inn <: numtype)) = | ADD | SUB @@ -13527,7 +13602,7 @@ syntax binop_(numtype : numtype) | ROTR - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ADD | SUB @@ -13538,13 +13613,25 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE(sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE @@ -13554,7 +13641,7 @@ syntax relop_(numtype : numtype) | GE(sx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | EQ | NE @@ -13564,9 +13651,9 @@ syntax relop_(numtype : numtype) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) @@ -13574,14 +13661,14 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = | TRUNC(sx) | TRUNC_SAT(sx) @@ -13589,7 +13676,7 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype)) = | PROMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -13597,75 +13684,75 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax dim = | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax shape = | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax M = dim -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax ishape = | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax bshape = | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax zero = | ZERO -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax half = | LOW | HIGH -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvunop = | NOT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvbinop = | AND | ANDNOT | OR | XOR -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvternop = | BITSELECT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvtestop = | ANY_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG @@ -13673,7 +13760,7 @@ syntax vunop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG @@ -13684,9 +13771,9 @@ syntax vunop_(shape : shape) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB @@ -13708,7 +13795,7 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB @@ -13722,26 +13809,26 @@ syntax vbinop_(shape : shape) | RELAXED_MAX -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE @@ -13755,7 +13842,7 @@ syntax vrelop_(shape : shape) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE @@ -13765,22 +13852,22 @@ syntax vrelop_(shape : shape) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL | SHR(sx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) @@ -13789,26 +13876,26 @@ syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_ | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) @@ -13816,7 +13903,7 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) @@ -13824,24 +13911,24 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax memarg = { ALIGN u32, OFFSET u64 } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) @@ -13849,49 +13936,49 @@ syntax vloadop_{vectype : vectype}(vectype) = | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax blocktype = | _RESULT(valtype?) | _IDX(typeidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax addr = nat -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) | CATCH_REF(tagidx : tagidx, labelidx : labelidx) | CATCH_ALL(labelidx) | CATCH_ALL_REF(labelidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exnaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax memaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tagaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax externaddr = | TAG(tagaddr) | GLOBAL(globaladdr) @@ -13899,14 +13986,14 @@ syntax externaddr = | TABLE(tableaddr) | FUNC(funcaddr) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exportinst = { NAME name, ADDR externaddr } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax moduleinst = { TYPES deftype*, @@ -13920,16 +14007,16 @@ syntax moduleinst = EXPORTS exportinst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 syntax ref = | `REF.I31_NUM`(u31) | `REF.NULL_ADDR` @@ -13941,7 +14028,7 @@ syntax ref = | `REF.EXTERN`(ref) } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -13954,17 +14041,17 @@ syntax val = | `REF.HOST_ADDR`(hostaddr) | `REF.EXTERN`(ref) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = { LOCALS val?*, MODULE moduleinst } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -14048,6 +14135,8 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -14087,451 +14176,451 @@ syntax instr = | TRAP } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax expr = instr* -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 : memarg - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:597.1-597.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:598.1-598.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../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_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../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_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 + ;; ../../../../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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-546.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-548.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-562.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.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}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-589.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-592.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-601.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*`})) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax datamode = | ACTIVE(memidx : memidx, expr : expr) | PASSIVE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax type = | TYPE(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax tag = | TAG(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax global = | GLOBAL(globaltype : globaltype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax mem = | MEMORY(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax table = | TABLE(tabletype : tabletype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax data = | DATA(`byte*` : byte*, datamode : datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax local = | LOCAL(valtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax func = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elem = | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax start = | START(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax import = | IMPORT(name : name, name : name, externtype : externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax export = | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax module = | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type(type : type) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag{tagtype : tagtype}(TAG_tag(tagtype)) = $free_tagtype(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global(global : global) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : expr}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table(table : table) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : expr}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local(local : local) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func(func : func) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func{typeidx : typeidx, `local*` : local*, expr : expr}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start(start : start) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start{funcidx : funcidx}(START_start(funcidx)) = $free_funcidx(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import(import : import) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export(export : export) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module(module : module) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs(func*) : dataidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax init = | SET | UNSET -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax localtype = | `%%`(init : init, valtype : valtype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax instrtype = | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax context = { TYPES deftype*, @@ -14549,233 +14638,233 @@ syntax context = RECS subtype* } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypenat = | OK(nat) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{typeuse : typeuse, i : nat}(typeuse, i) = true -- otherwise -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:9.1-9.92 relation Heaptype_ok: `%|-%:OK`(context, heaptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.30 rule typeidx{C : context, typeidx : typeidx, dt : deftype}: `%|-%:OK`(C, _IDX_typeuse(typeidx)) -- if (C.TYPES_context[typeidx!`%`_typeidx.0] = dt) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.23 rule rec{C : context, i : n, st : subtype}: `%|-%:OK`(C, REC_typeuse(i)) -- if (C.RECS_context[i] = st) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + ;; ../../../../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) @@ -14785,266 +14874,266 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.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-3.0/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.41 rule struct{C : context, `ft_1*` : fieldtype*, `ft'_1*` : fieldtype*, `ft_2*` : fieldtype*}: `%|-%<:%`(C, STRUCT_comptype(`%`_list(ft_1*{ft_1 <- `ft_1*`} ++ ft'_1*{ft'_1 <- `ft'_1*`},)), STRUCT_comptype(`%`_list(ft_2*{ft_2 <- `ft_2*`},))) -- (Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2))*{ft_1 <- `ft_1*`, ft_2 <- `ft_2*`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + ;; ../../../../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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.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))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.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*`},)))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + ;; ../../../../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-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.37 rule _{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (Valtype_sub: `%|-%<:%`(C, t_1, t_2))*{t_1 <- `t_1*`, t_2 <- `t_2*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Localtype_ok: `%|-%:OK`(context, localtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- if (|x*{x <- `x*`}| <= 1) @@ -15053,91 +15142,91 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) @@ -15145,232 +15234,232 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- if (x*{x <- `x*`} = $setminus_(syntax localidx, x_2*{x_2 <- `x_2*`}, x_1*{x_1 <- `x_1*`})) -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_(valtype : valtype) : val? - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{n : n, m : m, at : addrtype, N : N}: `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:5.1-5.95 relation Instr_ok: `%|-%:%`(context, instr, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]))*{l <- `l*`} -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -15379,7 +15468,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + ;; ../../../../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}: `%|-%:%`(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)],)) @@ -15388,30 +15477,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) -- Reftype_sub: `%|-%<:%`(C, rt, REF_reftype(?(NULL_null), FUNC_heaptype)) -- Expand: `%~~%`(C.TYPES_context[y!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + ;; ../../../../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*}: `%|-%:%`(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*`},))) @@ -15419,7 +15508,7 @@ 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-3.0/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) @@ -15427,7 +15516,7 @@ 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-3.0/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) @@ -15437,781 +15526,789 @@ 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-3.0/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Expand: `%~~%`($as_deftype(C.TAGS_context[x!`%`_idx.0]), `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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-3.0/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:202.1-204.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + ;; ../../../../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) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + ;; ../../../../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-3.0/2.3-validation.instructions.spectec:250.1-253.48 + ;; ../../../../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*`},))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.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)],))) -- 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-3.0/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.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([],))) -- 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-3.0/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, (rt : reftype <: storagetype)))) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-294.24 rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x_1!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt_1))) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:318.1-321.44 rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:323.1-327.24 rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) -- if (($unpack(zt) = (numtype : numtype <: valtype)) \/ ($unpack(zt) = (vectype : vectype <: valtype))) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x_1!`%`_idx.0] = `%%%`_tabletype(at_1, lim_1, rt_1)) -- if (C.TABLES_context[x_2!`%`_idx.0] = `%%%`_tabletype(at_2, lim_2, rt_2)) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt_1)) -- if (C.ELEMS_context[y!`%`_idx.0] = rt_2) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x_1!`%`_idx.0] = `%%PAGE`_memtype(at_1, lim_1)) -- if (C.MEMS_context[x_2!`%`_idx.0] = `%%PAGE`_memtype(at_2, lim_2)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:456.1-459.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-3.0/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $size(nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:475.1-478.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-3.0/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:485.1-488.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-3.0/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, $vsize(V128_vectype)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) -- if ((i!`%`_laneidx.0 : nat <:> rat) < ((128 : nat <:> rat) / (N : nat <:> rat))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-539.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-631.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-3.0/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_(vt)}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: `%|-%CONST`(C, BINOP_instr((Inn : Inn <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_const: `%|-%CONST`(context, expr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Mem_ok: `%|-%:%`(context, mem, memtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Defaultable: `|-%DEFAULTABLE`(t,) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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]) -- 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*`},)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt')) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (C.TAGS_context[x!`%`_idx.0] = jt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (C.GLOBALS_context[x!`%`_idx.0] = gt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (C.MEMS_context[x!`%`_idx.0] = mt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (C.TABLES_context[x!`%`_idx.0] = tt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec syntax nonfuncs = | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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*}: `|-%:%`(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'*`}) @@ -16235,1028 +16332,1055 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed4 = | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_(numtype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = (i : nat <:> int) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = (i : int <:> nat) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx(storagetype : storagetype) : sx? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(false) = 0 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(true) = 1 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $truncz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ceilz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = 0 -- if (i < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_(N : N, int : int) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = i -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ictz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ipopcnt_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 <= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 > i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 >= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 < i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inot_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irev_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fne_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $flt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fle_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fge_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : num_($lunpack((packtype : packtype <: lanetype)))}((packtype : packtype <: lanetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_((!($cunpack(storagetype)) : consttype <: storagetype))) : lit_(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{consttype : consttype, c : lit_((!($cunpack((consttype : consttype <: storagetype))) : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : lit_((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype))}((packtype : packtype <: storagetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : lane_((packtype : packtype <: lanetype))}((packtype : packtype <: lanetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_((!($cunpack(storagetype)) : consttype <: storagetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : lit_((packtype : packtype <: storagetype))}((packtype : packtype <: storagetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEG_unop_, f) = $fneg_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SQRT_unop_, f) = $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), CEIL_unop_, f) = $fceil_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), FLOOR_unop_, f) = $ffloor_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), TRUNC_unop_, f) = $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEAREST_unop_, f) = $fnearest_($sizenn((Fnn : Fnn <: numtype)), f) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ADD_binop_, f_1, f_2) = $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SUB_binop_, f_1, f_2) = $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MUL_binop_, f_1, f_2) = $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), DIV_binop_, f_1, f_2) = $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MIN_binop_, f_1, f_2) = $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MAX_binop_, f_1, f_2) = $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), COPYSIGN_binop_, f_1, f_2) = $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), EQ_relop_, f_1, f_2) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NE_relop_, f_1, f_2) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LT_relop_, f_1, f_2) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GT_relop_, f_1, f_2) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LE_relop_, f_1, f_2) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GE_relop_, f_1, f_2) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), PROMOTE_cvtop__, f_1) = $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), DEMOTE_cvtop__, f_1) = $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) + +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(HIGH_half, i, j) = j -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn), v_3 : vec_(Vnn)}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) @@ -17264,40 +17388,40 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) @@ -17305,23 +17429,23 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) @@ -17329,57 +17453,57 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax num = | CONST(numtype : numtype, num_(numtype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostfunc = | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funccode = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax taginst = { TYPE tagtype } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globalinst = { TYPE globaltype, VALUE val } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax meminst = { TYPE memtype, BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableinst = { TYPE tabletype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcinst = { TYPE deftype, @@ -17387,24 +17511,24 @@ syntax funcinst = CODE funccode } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax datainst = { BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax eleminst = { TYPE elemtype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax packval = | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -17418,28 +17542,28 @@ syntax fieldval = | `REF.EXTERN`(ref) | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exninst = { TAG tagaddr, FIELDS val* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax store = { TAGS taginst*, @@ -17454,296 +17578,296 @@ syntax store = EXNS exninst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax state = | `%;%`(store : store, frame : frame) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax config = | `%;%`(state : state, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki : nat - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki = 1024 -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_(storagetype : storagetype, val : val) : fieldval - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : num_(I32_numtype)}((packtype : packtype <: storagetype), CONST_val(I32_numtype, i)) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : iN($psizenn(packtype))}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, $extend__($psize(packtype), 32, sx, i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst(state : state) : moduleinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : u64}(tableinst, n, r) = ?(tableinst') -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) @@ -17752,9 +17876,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = ?(meminst') -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) @@ -17763,79 +17887,79 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostcallresult = | RES(store : store, result : result) | BOT -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(result : result) : instr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(TRAP_result) = [TRAP_instr] -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_(nt)}: `%|-%:%`(s, CONST_num(nt, c), nt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_(vt)}: `%|-%:%`(s, VCONST_vec(vt, c), vt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.36 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -17843,72 +17967,72 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Val_ok: `%|-%:%`(store, val, valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: `%|-%:%`(s, PACK_packval(pt, c), pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + ;; ../../../../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)) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -17916,653 +18040,663 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-true`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-false`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_labelidx.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-true`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-false`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[i!`%`_num_.0])]) -- if (i!`%`_num_.0 < |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.i31`{i : num_(I32_numtype)}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (c <- $unop_(nt, unop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_(nt), unop : unop_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (c <- $binop_(nt, binop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_(nt), testop : testop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (c = $testop_(nt, testop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), relop : relop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (c = $relop_(nt, relop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), c : num_(nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), vvbinop : vvbinop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), vvternop : vvternop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (c = $inez_($vsize(V128_vectype), c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vunop_(sh, vunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_(V128_Vnn), i : num_(I32_numtype), sh : ishape, vshiftop : vshiftop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, i)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_(V128_Vnn), sh : ishape, c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (c = $vbitmaskop_(sh, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, swizzlop : vswizzlop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, `i*` : laneidx*, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_(V128_Vnn), sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(K)*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -18570,23 +18704,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -18594,312 +18728,312 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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-3.0/4.3-execution.instructions.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- otherwise -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.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) @@ -18907,7 +19041,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-3.0/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:184.1-190.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) @@ -18915,7 +19049,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-3.0/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if ($funcinst(`%;%`_state(s, f))[a] = fi) @@ -18923,167 +19057,167 @@ 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-3.0/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.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-3.0/4.3-execution.instructions.spectec:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:320.1-321.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:333.1-334.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-365.46 rule `table.grow-succeed`{z : state, ref : ref, at : addrtype, n : n, x : idx, ti : tableinst}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config($with_tableinst(z, x, ti), [CONST_instr((at : addrtype <: numtype), `%`_num_(|$table(z, x).REFS_tableinst|,))])) -- if (ti = !($growtable($table(z, x), n, ref))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:428.1-429.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.60 rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.29 rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.63 rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-542.31 rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.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-3.0/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.37 rule `memory.grow-succeed`{z : state, at : addrtype, n : n, x : idx, mi : meminst}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config($with_meminst(z, x, mi), [CONST_instr((at : addrtype <: numtype), `%`_num_((((|$mem(z, x).BYTES_meminst| : nat <:> rat) / ((64 * $Ki) : nat <:> rat)) : rat <:> nat),))])) -- if (mi = !($growmem($mem(z, x), n))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:630.1-631.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:707.1-711.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:795.1-797.39 rule `array.set-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) -- if (type = TYPE_type(rectype)) @@ -19091,160 +19225,160 @@ def $alloctypes(type*) : deftype* -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- if ((s_1, ja) = $alloctag(s, tagtype)) -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- if ((s_1, ma) = $allocmem(s, memtype)) -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) @@ -19271,56 +19405,56 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) @@ -19328,9 +19462,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} @@ -19351,32 +19485,32 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax nopt = u32* -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax idctxt = { TYPES name?*, @@ -19393,23 +19527,23 @@ syntax idctxt = TYPEDEFS deftype?* } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax I = idctxt -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I,) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) @@ -19425,10 +19559,10 @@ relation Idctxt_ok: `|-%:OK`(idctxt,) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec syntax decl = | TYPE(rectype) | IMPORT(name : name, name : name, externtype : externtype) @@ -19442,171 +19576,171 @@ syntax decl = | START(funcidx) | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:272.1-272.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:276.1-276.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:280.1-280.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:284.1-284.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:288.1-288.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:292.1-292.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:296.1-296.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:300.1-300.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:304.1-304.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:308.1-308.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:312.1-312.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) - ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + ;; ../../../../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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) @@ -19625,42 +19759,42 @@ relation Context_ok: `|-%:OK`(context,) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule unset{s : store, t : valtype}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exportinst_ok: `%|-%:OK`(store, exportinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:14.1-17.43 rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/7.1-soundness.configurations.spectec:20.1-26.42 + ;; ../../../../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*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) @@ -19709,18 +19843,18 @@ relation Instr_ok2: `%;%|-%:%`(store, 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-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:28.1-30.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Ref_ok: `%|-%:%`(s, ref, rt) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:32.1-35.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:37.1-42.35 rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) -- Frame_ok: `%|-%:%`(s, f, C') @@ -19728,86 +19862,86 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:44.1-47.49 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:49.1-51.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:5.1-6.36 relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:54.1-55.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:57.1-61.86 rule seq{s : store, 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*}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:63.1-67.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:70.1-73.33 rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:7.1-8.36 relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:76.1-78.44 rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `mut?` : mut?, t : valtype, val : val}: `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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) @@ -19815,81 +19949,81 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exninst_ok: `%|-%:OK`(store, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) -- if ((dt : deftype <: typeuse) = s.TAGS_store[ta].TYPE_taginst) -- Expand: `%~~%`(dt, `FUNC%->%`_comptype(`%`_resulttype(t*{t <- `t*`},), `%`_resulttype([],))) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + ;; ../../../../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}: `%>>_%%`(`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-3.0/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true -- otherwise -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -- if $NotImmutReachable(fv_1, s, fv_2) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store,) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: `|-%:OK`(s,) -- (Taginst_ok: `%|-%:%`(s, taginst, tagtype))*{taginst <- `taginst*`, tagtype <- `tagtype*`} @@ -19907,80 +20041,80 @@ relation Store_ok: `|-%:OK`(store,) -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_taginst: `%<=%`(taginst, taginst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- 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?*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_exninst: `%<=%`(exninst, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, s' : store}: `%<=%`(s, s') -- (Extend_taginst: `%<=%`(s.TAGS_store[a], s'.TAGS_store[a]))^(a<|s.TAGS_store|){} @@ -19994,43 +20128,43 @@ relation Extend_store: `%<=%`(store, store) -- (Extend_arrayinst: `%<=%`(s.ARRAYS_store[a], s'.ARRAYS_store[a]))^(a<|s.ARRAYS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, C : context}: `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s,) -- Frame_ok: `%|-%:%`(s, f, C) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Config_ok: `|-%:%`(config, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) -- State_ok: `|-%:%`(`%;%`_state(s, f), C) -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax A = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax B = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax sym = | _FIRST(A) | _DOTS | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax symsplit = | _FIRST(A) | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax recorddots = () -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax record = { FIELD_1 A, @@ -20038,22 +20172,22 @@ syntax record = `...` recorddots } -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax pth = | PTHSYNTAX -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec syntax T = nat -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingScheme: `%`(nat,) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: `%`(conclusion,) -- NotationTypingPremise: `%`(premise_1,) @@ -20061,3698 +20195,3714 @@ relation NotationTypingScheme: `%`(nat,) -- NotationTypingPremisedots: `...` -- NotationTypingPremise: `%`(premise_n,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec relation NotationReduct: `~>%`(instr*,) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 4{q_6 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $instrdots : instr* -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax callframe = | `FRAME_%{%}`(n : n, frame : frame) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:33.1-33.57 def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec syntax symdots = | `%`(i : nat,) -- if (i = 0) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var{syntax X}(syntax X) = 0 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax abbreviated = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax expanded = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax syntax = () -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:10.5-10.83 prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:11.5-11.82 prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:14.5-14.87 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:15.5-15.101 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:16.5-16.82 prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : sN(33)} ``:BsN(33) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(32)} ``:BfN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(64)} ``:BfN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfieldidx : fieldidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{l : labelidx} l:Bu32 => l -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7F => I32_numtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7B => V128_vectype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x74 => NOEXN_heaptype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x01 => ?(MUT_mut) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x78 => I8_packtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x03 => (?(NULL_null), ?(NULL_null)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:9.5-9.16 prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:10.5-10.17 prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:11.5-11.19 prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:47.5-47.60 prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:49.5-49.67 prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:50.5-50.41 prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:51.5-51.48 prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:52.5-52.81 prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:53.5-53.37 prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:54.5-54.41 prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:55.5-56.100 prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + ;; ../../../../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-3.0/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.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-3.0/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.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-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.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-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.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-3.0/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:428.5-428.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:438.5-438.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:503.5-503.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:512.5-512.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:526.5-526.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:532.5-532.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:536.5-536.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:540.5-540.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:546.5-546.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:550.5-550.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:579.5-579.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:606.5-606.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:610.5-610.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:632.5-632.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:640.5-640.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:645.5-645.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:650.5-650.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:671.5-671.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:681.5-681.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:682.5-682.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:689.5-689.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:693.5-693.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:698.5-698.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:725.5-725.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:741.5-741.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:742.5-742.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:769.5-769.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:770.5-770.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:792.5-792.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.5-793.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod eps => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{Bname} {Bbyte*{}}} => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{qt : rectype} qt:Brectype => TYPE_type(qt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod 0x00 => REF_reftype(?(), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tchar*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x21 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x23 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x24 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x25 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x26 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x27 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2B => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x40 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x60 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7E => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x39 => 9 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x66 => 15 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:22.1-24.46 grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:23.5-23.21 prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:24.5-24.46 prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tchar => c -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\t" => `%`_char(9,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\n" => `%`_char(10,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\r" => `%`_char(13,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\"" => `%`_char(34,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\'" => `%`_char(39,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\\" => `%`_char(92,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Treserved => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tname => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:56.1-57.26 grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:57.5-57.26 prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:60.1-64.18 grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : text} ``:"" => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tblockcomment => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x09 => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:32.1-33.41 grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:33.5-33.41 prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:69.1-70.41 grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:70.5-70.41 prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "-" => - (1 : nat <:> int) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:18.1-20.40 grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:19.5-19.18 prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:20.5-20.40 prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:38.1-40.48 grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:39.5-39.26 prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:40.5-40.48 prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:42.1-44.54 grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:43.5-43.29 prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:44.5-44.54 prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Tfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Thexfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "nan" => NAN_fNmag($canon_(N),) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(8)} ``:TuN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(32)} ``:TuN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(64)} ``:TuN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(8)} ``:TiN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(16)} ``:TiN(16) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(32)} ``:TiN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(32)} ``:TfN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(64)} ``:TfN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f64" => F64_numtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "v128" => V128_vectype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noextern" => NOEXTERN_heaptype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "null" => NULL_null -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i16" => I16_packtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "final" => FINAL_final -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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') -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_addrtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec + ;; ../../../../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 []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tfoldedinstr_(I : I) : instr* -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Talign_(N : N) : u32 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u32(N,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.is_null" => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.eq" => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_u" => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "array.len" => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:15.1-17.29 grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:16.5-16.29 prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:17.5-17.29 prod{in : instr} in:Tblockinstr_(I) => in -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:23.1-24.52 grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:20.5-20.27 prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:63.5-67.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:68.5-72.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:73.5-79.71 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:80.5-85.35 prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Toffsetexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) -- Idctxt_ok: `|-%:OK`(I',) @@ -23769,291 +23919,291 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () == IL Validation after pass totalize... == Running pass sideconditions... -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax N = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax K = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax n = nat -;; ../../../../specification/wasm-3.0/0.1-aux.vars.spectec +;; ../../../../specification/wasm-latest/0.1-aux.vars.spectec syntax m = nat -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min(nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = i -- if (i <= j) - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec def $min{i : nat, j : nat}(i, j) = j -- otherwise -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:9.1-9.56 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:9.1-9.56 def $sum(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:10.1-10.18 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:10.1-10.18 def $sum([]) = 0 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:11.1-11.35 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:11.1-11.35 def $sum{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n + $sum(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec rec { -;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:13.1-13.57 +;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:13.1-13.57 def $prod(nat*) : nat - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:14.1-14.19 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:14.1-14.19 def $prod([]) = 1 - ;; ../../../../specification/wasm-3.0/0.2-aux.num.spectec:15.1-15.37 + ;; ../../../../specification/wasm-latest/0.2-aux.num.spectec:15.1-15.37 def $prod{n : n, `n'*` : n*}([n] ++ n'*{n' <- `n'*`}) = (n * $prod(n'*{n' <- `n'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_(syntax X, X*) : X? - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X}(syntax X, []) = ?() - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $opt_{syntax X, w : X}(syntax X, [w]) = ?(w) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:14.1-14.82 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:14.1-14.82 def $concat_(syntax X, X**) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:15.1-15.34 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:15.1-15.34 def $concat_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:16.1-16.64 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:16.1-16.64 def $concat_{syntax X, `w*` : X*, `w'**` : X**}(syntax X, [w*{w <- `w*`}] ++ w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) = w*{w <- `w*`} ++ $concat_(syntax X, w'*{w' <- `w'*`}*{`w'*` <- `w'**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:18.1-18.89 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:18.1-18.89 def $concatn_(syntax X, X**, nat : nat) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:19.1-19.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:19.1-19.38 def $concatn_{syntax X, n : n}(syntax X, [], n) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:20.1-20.73 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:20.1-20.73 def $concatn_{syntax X, n : n, `w*` : X*, `w'**` : X**}(syntax X, [w^n{w <- `w*`}] ++ w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) = w^n{w <- `w*`} ++ $concatn_(syntax X, w'^n{w' <- `w'*`}*{`w'*` <- `w'**`}, n) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_(syntax X, X?*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X}(syntax X, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $concatopt_{syntax X, `w?` : X?, `w'?*` : X?*}(syntax X, [w?{w <- `w?`}] ++ w'?{w' <- `w'?`}*{`w'?` <- `w'?*`}) = lift(w?{w <- `w?`}) ++ $concat_(syntax X, lift(w'?{w' <- `w'?`})*{`w'?` <- `w'?*`}) -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concat_(syntax X, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec def $inv_concatn_(syntax X, nat : nat, X*) : X** -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:35.1-35.78 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:35.1-35.78 def $disjoint_(syntax X, X*) : bool - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:36.1-36.37 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:36.1-36.37 def $disjoint_{syntax X}(syntax X, []) = true - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:37.1-37.68 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:37.1-37.68 def $disjoint_{syntax X, w : X, `w'*` : X*}(syntax X, [w] ++ w'*{w' <- `w'*`}) = (~ (w <- w'*{w' <- `w'*`}) /\ $disjoint_(syntax X, w'*{w' <- `w'*`})) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:40.1-40.38 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:40.1-40.38 def $setminus1_(syntax X, X : X, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:44.1-44.38 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:44.1-44.38 def $setminus1_{syntax X, w : X}(syntax X, w, []) = [w] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:45.1-45.78 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:45.1-45.78 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = [] -- if (w = w_1) - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:46.1-46.77 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:46.1-46.77 def $setminus1_{syntax X, w : X, w_1 : X, `w'*` : X*}(syntax X, w, [w_1] ++ w'*{w' <- `w'*`}) = $setminus1_(syntax X, w, w'*{w' <- `w'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:39.1-39.56 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:39.1-39.56 def $setminus_(syntax X, X*, X*) : X* - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:42.1-42.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:42.1-42.40 def $setminus_{syntax X, `w*` : X*}(syntax X, [], w*{w <- `w*`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:43.1-43.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:43.1-43.90 def $setminus_{syntax X, w_1 : X, `w'*` : X*, `w*` : X*}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}) = $setminus1_(syntax X, w_1, w*{w <- `w*`}) ++ $setminus_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:51.1-51.46 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:51.1-51.46 def $setproduct2_(syntax X, X : X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:57.1-57.44 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:57.1-57.44 def $setproduct2_{syntax X, w_1 : X}(syntax X, w_1, []) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:58.1-58.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:58.1-58.90 def $setproduct2_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, w_1, [w'*{w' <- `w'*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = [[w_1] ++ w'*{w' <- `w'*`}] ++ $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:50.1-50.47 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:50.1-50.47 def $setproduct1_(syntax X, X*, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:55.1-55.46 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:55.1-55.46 def $setproduct1_{syntax X, `w**` : X**}(syntax X, [], w*{w <- `w*`}*{`w*` <- `w**`}) = [] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:56.1-56.107 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:56.1-56.107 def $setproduct1_{syntax X, w_1 : X, `w'*` : X*, `w**` : X**}(syntax X, [w_1] ++ w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct2_(syntax X, w_1, w*{w <- `w*`}*{`w*` <- `w**`}) ++ $setproduct1_(syntax X, w'*{w' <- `w'*`}, w*{w <- `w*`}*{`w*` <- `w**`}) } -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec rec { -;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:49.1-49.84 +;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:49.1-49.84 def $setproduct_(syntax X, X**) : X** - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:53.1-53.40 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:53.1-53.40 def $setproduct_{syntax X}(syntax X, []) = [[]] - ;; ../../../../specification/wasm-3.0/0.3-aux.seq.spectec:54.1-54.90 + ;; ../../../../specification/wasm-latest/0.3-aux.seq.spectec:54.1-54.90 def $setproduct_{syntax X, `w_1*` : X*, `w**` : X**}(syntax X, [w_1*{w_1 <- `w_1*`}] ++ w*{w <- `w*`}*{`w*` <- `w**`}) = $setproduct1_(syntax X, w_1*{w_1 <- `w_1*`}, $setproduct_(syntax X, w*{w <- `w*`}*{`w*` <- `w**`})) } -;; ../../../../specification/wasm-3.0/1.0-syntax.profiles.spectec +;; ../../../../specification/wasm-latest/1.0-syntax.profiles.spectec def $ND : bool -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax bit = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax byte = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= 255)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax uN{N : N}(N) = | `%`(i : nat,) -- if ((i >= 0) /\ (i <= ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax sN{N : N}(N) = | `%`(i : int,) -- if ((((i >= - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) /\ (i <= - (1 : nat <:> int))) \/ (i = (0 : nat <:> int))) \/ ((i >= + (1 : nat <:> int)) /\ (i <= (+ ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax iN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u8 = uN(8) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u16 = uN(16) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u31 = uN(31) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u32 = uN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax u64 = uN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax s33 = sN(33) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i32 = iN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i64 = iN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax i128 = iN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(32) = 23 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $signif(64) = 52 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(32) = 8 - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $expon(64) = 11 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $M{N : N}(N) = $signif(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $E{N : N}(N) = $expon(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax exp = int -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fNmag{N : N}(N) = | NORM(m : m, exp : exp) -- if ((m < (2 ^ $M(N))) /\ ((((2 : nat <:> int) - ((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) <= exp) /\ (exp <= (((2 ^ ((($E(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))))) @@ -24063,129 +24213,129 @@ syntax fNmag{N : N}(N) = | NAN(m : m,) -- if ((1 <= m) /\ (m < (2 ^ $M(N)))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fN{N : N}(N) = | POS(fNmag(N)) | NEG(fNmag(N)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f32 = fN(32) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax f64 = fN(64) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fzero{N : N}(N) = POS_fN(SUBNORM_fNmag(0,)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat(N : N, nat : nat) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fnat{N : N, n : n}(N, n) = POS_fN(NORM_fNmag(n, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $fone{N : N}(N) = POS_fN(NORM_fNmag(1, (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_(N : N) : nat - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $canon_{N : N}(N) = (2 ^ ((($signif(N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax vN{N : N}(N) = uN(N) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax v128 = vN(128) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax list{syntax X}(syntax X) = | `%`(`X*` : X*,) -- if (|X*{X <- `X*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax char = | `%`(i : nat,) -- if (((i >= 0) /\ (i <= 55295)) \/ ((i >= 57344) /\ (i <= 1114111))) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont(byte : byte) : nat - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec def $cont{b : byte}(b) = (((b!`%`_byte.0 : nat <:> int) - (128 : nat <:> int)) : int <:> nat) -- if ((128 < b!`%`_byte.0) /\ (b!`%`_byte.0 < 192)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:91.1-91.25 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:91.1-91.25 def $utf8(char*) : byte* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:52.1-52.44 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:52.1-52.44 def $utf8{`ch*` : char*}(ch*{ch <- `ch*`}) = $concat_(syntax byte, $utf8([ch])*{ch <- `ch*`}) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:53.1-55.15 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:53.1-55.15 def $utf8{ch : char, b : byte}([ch]) = [b] -- if (ch!`%`_char.0 < 128) -- if (`%`_byte(ch!`%`_char.0,) = b) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:56.1-58.46 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:56.1-58.46 def $utf8{ch : char, b_1 : byte, b_2 : byte}([ch]) = [b_1 b_2] -- if ((128 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 2048)) -- if (ch!`%`_char.0 = (((2 ^ 6) * (((b_1!`%`_byte.0 : nat <:> int) - (192 : nat <:> int)) : int <:> nat)) + $cont(b_2))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:59.1-61.64 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:59.1-61.64 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte}([ch]) = [b_1 b_2 b_3] -- if (((2048 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 55296)) \/ ((57344 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 65536))) -- if (ch!`%`_char.0 = ((((2 ^ 12) * (((b_1!`%`_byte.0 : nat <:> int) - (224 : nat <:> int)) : int <:> nat)) + ((2 ^ 6) * $cont(b_2))) + $cont(b_3))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:62.1-64.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:62.1-64.82 def $utf8{ch : char, b_1 : byte, b_2 : byte, b_3 : byte, b_4 : byte}([ch]) = [b_1 b_2 b_3 b_4] -- if ((65536 <= ch!`%`_char.0) /\ (ch!`%`_char.0 < 69632)) -- if (ch!`%`_char.0 = (((((2 ^ 18) * (((b_1!`%`_byte.0 : nat <:> int) - (240 : nat <:> int)) : int <:> nat)) + ((2 ^ 12) * $cont(b_2))) + ((2 ^ 6) * $cont(b_3))) + $cont(b_4))) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax name = | `%`(`char*` : char*,) -- if (|$utf8(char*{char <- `char*`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax idx = u32 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax laneidx = u8 -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax typeidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax funcidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax globalidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tableidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax memidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax tagidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax elemidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax dataidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax labelidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax localidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax fieldidx = idx -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax externidx = | FUNC(funcidx) | GLOBAL(globalidx) @@ -24193,77 +24343,77 @@ syntax externidx = | MEM(memidx) | TAG(tagidx) -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:129.1-129.86 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:129.1-129.86 def $funcsxx(externidx*) : typeidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:135.1-135.24 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:135.1-135.24 def $funcsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:136.1-136.45 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:136.1-136.45 def $funcsxx{x : idx, `xx*` : externidx*}([FUNC_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $funcsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:137.1-137.58 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:137.1-137.58 def $funcsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $funcsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:130.1-130.88 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:130.1-130.88 def $globalsxx(externidx*) : globalidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:139.1-139.26 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:139.1-139.26 def $globalsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:140.1-140.51 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:140.1-140.51 def $globalsxx{x : idx, `xx*` : externidx*}([GLOBAL_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $globalsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:141.1-141.62 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:141.1-141.62 def $globalsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $globalsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:131.1-131.87 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:131.1-131.87 def $tablesxx(externidx*) : tableidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:143.1-143.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:143.1-143.25 def $tablesxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:144.1-144.48 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:144.1-144.48 def $tablesxx{x : idx, `xx*` : externidx*}([TABLE_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tablesxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:145.1-145.60 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:145.1-145.60 def $tablesxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tablesxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:132.1-132.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:132.1-132.85 def $memsxx(externidx*) : memidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:147.1-147.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:147.1-147.23 def $memsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:148.1-148.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:148.1-148.42 def $memsxx{x : idx, `xx*` : externidx*}([MEM_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $memsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:149.1-149.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:149.1-149.56 def $memsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $memsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:133.1-133.85 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:133.1-133.85 def $tagsxx(externidx*) : tagidx* - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:151.1-151.23 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:151.1-151.23 def $tagsxx([]) = [] - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:152.1-152.42 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:152.1-152.42 def $tagsxx{x : idx, `xx*` : externidx*}([TAG_externidx(x)] ++ xx*{xx <- `xx*`}) = [x] ++ $tagsxx(xx*{xx <- `xx*`}) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:153.1-153.56 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:153.1-153.56 def $tagsxx{externidx : externidx, `xx*` : externidx*}([externidx] ++ xx*{xx <- `xx*`}) = $tagsxx(xx*{xx <- `xx*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec syntax free = { TYPES typeidx*, @@ -24278,108 +24428,108 @@ syntax free = TAGS tagidx* } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(free?) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt(?()) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_opt{free : free}(?(free)) = free -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec rec { -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:173.1-173.29 +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:173.1-173.29 def $free_list(free*) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:178.1-178.25 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:178.1-178.25 def $free_list([]) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec:179.1-179.57 + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec:179.1-179.57 def $free_list{free : free, `free'*` : free*}([free] ++ free'*{free' <- `free'*`}) = free +++ $free_list(free'*{free' <- `free'*`}) } -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx(typeidx : typeidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_typeidx{typeidx : typeidx}(typeidx) = {TYPES [typeidx], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx(funcidx : funcidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_funcidx{funcidx : funcidx}(funcidx) = {TYPES [], FUNCS [funcidx], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx(globalidx : globalidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_globalidx{globalidx : globalidx}(globalidx) = {TYPES [], FUNCS [], GLOBALS [globalidx], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx(tableidx : tableidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tableidx{tableidx : tableidx}(tableidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [tableidx], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx(memidx : memidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_memidx{memidx : memidx}(memidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [memidx], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx(elemidx : elemidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_elemidx{elemidx : elemidx}(elemidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [elemidx], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx(dataidx : dataidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_dataidx{dataidx : dataidx}(dataidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [dataidx], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx(localidx : localidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_localidx{localidx : localidx}(localidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [localidx], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx(labelidx : labelidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_labelidx{labelidx : labelidx}(labelidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [labelidx], TAGS []} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx(tagidx : tagidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_tagidx{tagidx : tagidx}(tagidx) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS [tagidx]} -;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec +;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx(externidx : externidx) : free - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{funcidx : funcidx}(FUNC_externidx(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{globalidx : globalidx}(GLOBAL_externidx(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tableidx : tableidx}(TABLE_externidx(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{memidx : memidx}(MEM_externidx(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.1-syntax.values.spectec + ;; ../../../../specification/wasm-latest/1.1-syntax.values.spectec def $free_externidx{tagidx : tagidx}(TAG_externidx(tagidx)) = $free_tagidx(tagidx) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax null = | NULL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax addrtype = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax numtype = | I32 | I64 | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax vectype = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax consttype = | I32 | I64 @@ -24387,7 +24537,7 @@ syntax consttype = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax absheaptype = | ANY | EQ @@ -24403,24 +24553,24 @@ syntax absheaptype = | NOEXTERN | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax mut = | MUT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax final = | FINAL -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:37.1-38.43 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:37.1-38.43 syntax typeuse = | _IDX(typeidx) | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:43.1-44.26 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:43.1-44.26 syntax heaptype = | ANY | EQ @@ -24439,7 +24589,7 @@ syntax heaptype = | _DEF(rectype : rectype, n : n) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:51.1-52.14 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:51.1-52.14 syntax valtype = | I32 | I64 @@ -24449,7 +24599,7 @@ syntax valtype = | REF(`null?` : null?, heaptype : heaptype) | BOT -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:92.1-92.66 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:92.1-92.66 syntax storagetype = | I32 | I64 @@ -24461,56 +24611,56 @@ syntax storagetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:102.1-103.16 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:102.1-103.16 syntax resulttype = list(syntax valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:112.1-112.61 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:112.1-112.61 syntax fieldtype = | `%%`(`mut?` : mut?, storagetype : storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:114.1-117.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:114.1-117.34 syntax comptype = | STRUCT(list(syntax fieldtype)) | ARRAY(fieldtype) | `FUNC%->%`(resulttype : resulttype, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:119.1-120.33 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:119.1-120.33 syntax subtype = | SUB(`final?` : final?, `typeuse*` : typeuse*, comptype : comptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:122.1-123.22 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:122.1-123.22 syntax rectype = | REC(list(syntax subtype)) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax deftype = | _DEF(rectype : rectype, n : n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax typevar = | _IDX(typeidx) | REC(n) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax reftype = | REF(`null?` : null?, heaptype : heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Inn = | I32 | I64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Fnn = | F32 | F64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Vnn = | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Cnn = | I32 | I64 @@ -24518,72 +24668,72 @@ syntax Cnn = | F64 | V128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ANYREF = REF_reftype(?(NULL_null), ANY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EQREF = REF_reftype(?(NULL_null), EQ_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $I31REF = REF_reftype(?(NULL_null), I31_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $STRUCTREF = REF_reftype(?(NULL_null), STRUCT_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $ARRAYREF = REF_reftype(?(NULL_null), ARRAY_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FUNCREF = REF_reftype(?(NULL_null), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXNREF = REF_reftype(?(NULL_null), EXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $EXTERNREF = REF_reftype(?(NULL_null), EXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLREF = REF_reftype(?(NULL_null), NONE_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLFUNCREF = REF_reftype(?(NULL_null), NOFUNC_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXNREF = REF_reftype(?(NULL_null), NOEXN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $NULLEXTERNREF = REF_reftype(?(NULL_null), NOEXTERN_heaptype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax packtype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax lanetype = | I32 | I64 @@ -24592,17 +24742,17 @@ syntax lanetype = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Pnn = packtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Jnn = | I32 | I64 | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax Lnn = | I32 | I64 @@ -24611,33 +24761,33 @@ syntax Lnn = | I8 | I16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax limits = | `[%..%]`(u64 : u64, `u64?` : u64?) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tagtype = typeuse -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax globaltype = | `%%`(`mut?` : mut?, valtype : valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax memtype = | `%%PAGE`(addrtype : addrtype, limits : limits) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax tabletype = | `%%%`(addrtype : addrtype, limits : limits, reftype : reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax datatype = | OK -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax elemtype = reftype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax externtype = | TAG(tagtype) | GLOBAL(globaltype) @@ -24645,762 +24795,762 @@ syntax externtype = | TABLE(tabletype) | FUNC(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec syntax moduletype = | `%->%`(`externtype*` : externtype*, `externtype*` : externtype*) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(N : N) : Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(32) = I32_Inn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $IN(64) = I64_Inn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(N : N) : Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(32) = F32_Fnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $FN(64) = F64_Fnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(N : N) : Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(8) = I8_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(16) = I16_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(32) = I32_Jnn - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $JN(64) = I64_Jnn -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(I64_numtype) = 64 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F32_numtype) = 32 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $size(F64_numtype) = 64 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsize(V128_vectype) = 128 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I8_packtype) = 8 - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psize(I16_packtype) = 16 -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{numtype : numtype}((numtype : numtype <: lanetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsize{packtype : packtype}((packtype : packtype <: lanetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize(storagetype : storagetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{numtype : numtype}((numtype : numtype <: storagetype)) = $size(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{vectype : vectype}((vectype : vectype <: storagetype)) = $vsize(vectype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $zsize{packtype : packtype}((packtype : packtype <: storagetype)) = $psize(packtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize(Inn : Inn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $isize{Inn : Inn}(Inn) = $size((Inn : Inn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsize{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize(Fnn : Fnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $fsize{Fnn : Fnn}(Fnn) = $size((Fnn : Fnn <: numtype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(nat : nat) : Inn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(32) = ?(I32_Inn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_isize(64) = ?(I64_Inn) def $inv_isize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(8) = ?(I8_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize(16) = ?(I16_Jnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsize{n : n}(n) = ?((!($inv_isize(n)) : Inn <: Jnn)) def $inv_jsize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(nat : nat) : Fnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(32) = ?(F32_Fnn) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_fsize(64) = ?(F64_Fnn) def $inv_fsize{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn1{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2(numtype : numtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $sizenn2{nt : numtype}(nt) = $size(nt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn(vectype : vectype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vsizenn{vt : vectype}(vt) = $vsize(vt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn(packtype : packtype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $psizenn{pt : packtype}(pt) = $psize(pt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn1{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2(lanetype : lanetype) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lsizenn2{lt : lanetype}(lt) = $lsize(lt) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn(Jnn : Jnn) : nat - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $jsizenn{Jnn : Jnn}(Jnn) = $lsize((Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn(nat : nat) : Jnn? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $inv_jsizenn{n : n}(n) = ?(!($inv_jsize(n))) def $inv_jsizenn{x0 : nat}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack(lanetype : lanetype) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{numtype : numtype}((numtype : numtype <: lanetype)) = numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $lunpack{packtype : packtype}((packtype : packtype <: lanetype)) = I32_numtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack(storagetype : storagetype) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{valtype : valtype}((valtype : valtype <: storagetype)) = valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $unpack{packtype : packtype}((packtype : packtype <: storagetype)) = I32_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack(storagetype : storagetype) : numtype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{numtype : numtype}((numtype : numtype <: storagetype)) = ?(numtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $nunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_numtype) def $nunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack(storagetype : storagetype) : vectype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $vunpack{vectype : vectype}((vectype : vectype <: storagetype)) = ?(vectype) def $vunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack(storagetype : storagetype) : consttype? - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{consttype : consttype}((consttype : consttype <: storagetype)) = ?(consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{packtype : packtype}((packtype : packtype <: storagetype)) = ?(I32_consttype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $cunpack{lanetype : lanetype}((lanetype : lanetype <: storagetype)) = ?(($lunpack(lanetype) : numtype <: consttype)) def $cunpack{x0 : storagetype}(x0) = ?() -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat(addrtype : addrtype, addrtype : addrtype) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_1 -- if ($size((at_1 : addrtype <: numtype)) <= $size((at_2 : addrtype <: numtype))) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $minat{at_1 : addrtype, at_2 : addrtype}(at_1, at_2) = at_2 -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt(reftype : reftype, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(NULL_null), ht_2)) = REF_reftype(?(), ht_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $diffrt{`null_1?` : null?, ht_1 : heaptype, ht_2 : heaptype}(REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(?(), ht_2)) = REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype(typeuse : typeuse) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $as_deftype{dt : deftype}((dt : deftype <: typeuse)) = dt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:308.1-308.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:308.1-308.87 def $tagsxt(externtype*) : tagtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:314.1-314.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:314.1-314.23 def $tagsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:315.1-315.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:315.1-315.44 def $tagsxt{jt : tagtype, `xt*` : externtype*}([TAG_externtype(jt)] ++ xt*{xt <- `xt*`}) = [jt] ++ $tagsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:316.1-316.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:316.1-316.57 def $tagsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tagsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:309.1-309.90 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:309.1-309.90 def $globalsxt(externtype*) : globaltype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:318.1-318.26 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:318.1-318.26 def $globalsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:319.1-319.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:319.1-319.53 def $globalsxt{gt : globaltype, `xt*` : externtype*}([GLOBAL_externtype(gt)] ++ xt*{xt <- `xt*`}) = [gt] ++ $globalsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:320.1-320.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:320.1-320.63 def $globalsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $globalsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:310.1-310.87 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:310.1-310.87 def $memsxt(externtype*) : memtype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:322.1-322.23 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:322.1-322.23 def $memsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:323.1-323.44 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:323.1-323.44 def $memsxt{mt : memtype, `xt*` : externtype*}([MEM_externtype(mt)] ++ xt*{xt <- `xt*`}) = [mt] ++ $memsxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:324.1-324.57 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:324.1-324.57 def $memsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $memsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:311.1-311.89 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:311.1-311.89 def $tablesxt(externtype*) : tabletype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:326.1-326.25 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:326.1-326.25 def $tablesxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:327.1-327.50 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:327.1-327.50 def $tablesxt{tt : tabletype, `xt*` : externtype*}([TABLE_externtype(tt)] ++ xt*{xt <- `xt*`}) = [tt] ++ $tablesxt(xt*{xt <- `xt*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:328.1-328.61 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:328.1-328.61 def $tablesxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $tablesxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:312.1-312.88 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:312.1-312.88 def $funcsxt(externtype*) : deftype* - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:330.1-330.24 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:330.1-330.24 def $funcsxt([]) = [] - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:331.1-331.47 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:332.1-332.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:332.1-332.59 def $funcsxt{externtype : externtype, `xt*` : externtype*}([externtype] ++ xt*{xt <- `xt*`}) = $funcsxt(xt*{xt <- `xt*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:337.1-337.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:337.1-337.112 def $subst_typevar(typevar : typevar, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:365.1-365.38 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:365.1-365.38 def $subst_typevar{tv : typevar}(tv, [], []) = (tv : typevar <: typeuse) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:366.1-366.95 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:366.1-366.95 def $subst_typevar{tv : typevar, tv_1 : typevar, `tv'*` : typevar*, tu_1 : typeuse, `tu'*` : typeuse*}(tv, [tv_1] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) = tu_1 -- if (tv = tv_1) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:367.1-367.92 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:367.1-367.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 } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:401.1-401.59 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:401.1-401.59 def $minus_recs(typevar*, typeuse*) : (typevar*, typeuse*) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:402.1-402.39 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:402.1-402.39 def $minus_recs([], []) = ([], []) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:403.1-403.63 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:403.1-403.63 def $minus_recs{n : n, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*}([REC_typevar(n)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:404.1-405.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:404.1-405.45 def $minus_recs{x : idx, `tv*` : typevar*, tu_1 : typeuse, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}([_IDX_typevar(x)] ++ tv*{tv <- `tv*`}, [tu_1] ++ tu*{tu <- `tu*`}) = ([_IDX_typevar(x)] ++ tv'*{tv' <- `tv'*`}, [tu_1] ++ tu'*{tu' <- `tu'*`}) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype(packtype : packtype, typevar*, typeuse*) : packtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_packtype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = pt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype(numtype : numtype, typevar*, typeuse*) : numtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_numtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = nt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype(vectype : vectype, typevar*, typeuse*) : vectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_vectype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = vt -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec rec { -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:338.1-338.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:338.1-338.112 def $subst_typeuse(typeuse : typeuse, typevar*, typeuse*) : typeuse - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:369.1-369.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:369.1-369.66 def $subst_typeuse{tv' : typevar, `tv*` : typevar*, `tu*` : typeuse*}((tv' : typevar <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typevar(tv', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:370.1-370.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:370.1-370.64 def $subst_typeuse{dt : deftype, `tv*` : typevar*, `tu*` : typeuse*}((dt : deftype <: typeuse), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_deftype(dt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : deftype <: typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:343.1-343.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:343.1-343.112 def $subst_heaptype(heaptype : heaptype, typevar*, typeuse*) : heaptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:376.1-376.67 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:377.1-377.65 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:378.1-378.53 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:378.1-378.53 def $subst_heaptype{ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ht -- otherwise -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:344.1-344.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:344.1-344.112 def $subst_reftype(reftype : reftype, typevar*, typeuse*) : reftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:380.1-380.87 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:380.1-380.87 def $subst_reftype{`null?` : null?, ht : heaptype, `tv*` : typevar*, `tu*` : typeuse*}(REF_reftype(null?{null <- `null?`}, ht), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REF_reftype(null?{null <- `null?`}, $subst_heaptype(ht, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:345.1-345.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:345.1-345.112 def $subst_valtype(valtype : valtype, typevar*, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:382.1-382.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:382.1-382.64 def $subst_valtype{nt : numtype, `tv*` : typevar*, `tu*` : typeuse*}((nt : numtype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_numtype(nt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:383.1-383.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:383.1-383.64 def $subst_valtype{vt : vectype, `tv*` : typevar*, `tu*` : typeuse*}((vt : vectype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_vectype(vt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:384.1-384.64 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:384.1-384.64 def $subst_valtype{rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}((rt : reftype <: valtype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : reftype <: valtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:385.1-385.40 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:385.1-385.40 def $subst_valtype{`tv*` : typevar*, `tu*` : typeuse*}(BOT_valtype, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = BOT_valtype -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:348.1-348.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:348.1-348.112 def $subst_storagetype(storagetype : storagetype, typevar*, typeuse*) : storagetype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:389.1-389.66 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:389.1-389.66 def $subst_storagetype{t : valtype, `tv*` : typevar*, `tu*` : typeuse*}((t : valtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:390.1-390.69 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:390.1-390.69 def $subst_storagetype{pt : packtype, `tv*` : typevar*, `tu*` : typeuse*}((pt : packtype <: storagetype), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ($subst_packtype(pt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:349.1-349.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:349.1-349.112 def $subst_fieldtype(fieldtype : fieldtype, typevar*, typeuse*) : fieldtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:392.1-392.82 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:392.1-392.82 def $subst_fieldtype{`mut?` : mut?, zt : storagetype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_fieldtype(mut?{mut <- `mut?`}, zt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_fieldtype(mut?{mut <- `mut?`}, $subst_storagetype(zt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:351.1-351.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:351.1-351.112 def $subst_comptype(comptype : comptype, typevar*, typeuse*) : comptype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:394.1-394.85 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:394.1-394.85 def $subst_comptype{`ft*` : fieldtype*, `tv*` : typevar*, `tu*` : typeuse*}(STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = STRUCT_comptype(`%`_list($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:395.1-395.81 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:395.1-395.81 def $subst_comptype{ft : fieldtype, `tv*` : typevar*, `tu*` : typeuse*}(ARRAY_comptype(ft), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = ARRAY_comptype($subst_fieldtype(ft, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:396.1-396.123 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:396.1-396.123 def $subst_comptype{`t_1*` : valtype*, `t_2*` : valtype*, `tv*` : typevar*, `tu*` : typeuse*}(`FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `FUNC%->%`_comptype(`%`_resulttype($subst_valtype(t_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_1 <- `t_1*`},), `%`_resulttype($subst_valtype(t_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:352.1-352.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:352.1-352.112 def $subst_subtype(subtype : subtype, typevar*, typeuse*) : subtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:398.1-399.74 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:353.1-353.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:353.1-353.112 def $subst_rectype(rectype : rectype, typevar*, typeuse*) : rectype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:407.1-408.45 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:407.1-408.45 def $subst_rectype{`st*` : subtype*, `tv*` : typevar*, `tu*` : typeuse*, `tv'*` : typevar*, `tu'*` : typeuse*}(REC_rectype(`%`_list(st*{st <- `st*`},)), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = REC_rectype(`%`_list($subst_subtype(st, tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`})*{st <- `st*`},)) -- if ((tv'*{tv' <- `tv'*`}, tu'*{tu' <- `tu'*`}) = $minus_recs(tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:354.1-354.112 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:354.1-354.112 def $subst_deftype(deftype : deftype, typevar*, typeuse*) : deftype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:413.1-413.80 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:413.1-413.80 def $subst_deftype{qt : rectype, i : n, `tv*` : typevar*, `tu*` : typeuse*}(_DEF_deftype(qt, i), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = _DEF_deftype($subst_rectype(qt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}), i) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype(addrtype : addrtype, typevar*, typeuse*) : addrtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_addrtype{at : addrtype, `tv*` : typevar*, `tu*` : typeuse*}(at, tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = at -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype(tagtype : tagtype, typevar*, typeuse*) : tagtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tagtype{tu' : typeuse, `tv*` : typevar*, `tu*` : typeuse*}(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = $subst_typeuse(tu', tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype(globaltype : globaltype, typevar*, typeuse*) : globaltype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_globaltype{`mut?` : mut?, t : valtype, `tv*` : typevar*, `tu*` : typeuse*}(`%%`_globaltype(mut?{mut <- `mut?`}, t), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%`_globaltype(mut?{mut <- `mut?`}, $subst_valtype(t, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype(memtype : memtype, typevar*, typeuse*) : memtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_memtype{at : addrtype, lim : limits, `tv*` : typevar*, `tu*` : typeuse*}(`%%PAGE`_memtype(at, lim), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype(tabletype : tabletype, typevar*, typeuse*) : tabletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_tabletype{at : addrtype, lim : limits, rt : reftype, `tv*` : typevar*, `tu*` : typeuse*}(`%%%`_tabletype(at, lim, rt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%%%`_tabletype(at, lim, $subst_reftype(rt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype(externtype : externtype, typevar*, typeuse*) : externtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{jt : tagtype, `tv*` : typevar*, `tu*` : typeuse*}(TAG_externtype(jt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TAG_externtype($subst_tagtype(jt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{gt : globaltype, `tv*` : typevar*, `tu*` : typeuse*}(GLOBAL_externtype(gt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = GLOBAL_externtype($subst_globaltype(gt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_externtype{tt : tabletype, `tv*` : typevar*, `tu*` : typeuse*}(TABLE_externtype(tt), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = TABLE_externtype($subst_tabletype(tt, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../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-3.0/1.2-syntax.types.spectec + ;; ../../../../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*`})) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype(moduletype : moduletype, typevar*, typeuse*) : moduletype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_moduletype{`xt_1*` : externtype*, `xt_2*` : externtype*, `tv*` : typevar*, `tu*` : typeuse*}(`%->%`_moduletype(xt_1*{xt_1 <- `xt_1*`}, xt_2*{xt_2 <- `xt_2*`}), tv*{tv <- `tv*`}, tu*{tu <- `tu*`}) = `%->%`_moduletype($subst_externtype(xt_1, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_1 <- `xt_1*`}, $subst_externtype(xt_2, tv*{tv <- `tv*`}, tu*{tu <- `tu*`})*{xt_2 <- `xt_2*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype(valtype : valtype, typeuse*) : valtype - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $subst_all_valtype{t : valtype, n : n, `tu*` : typeuse*, i : nat}(t, tu^n{tu <- `tu*`}) = $subst_valtype(t, _IDX_typevar(`%`_typeidx(i,))^(i%`_comptype(resulttype_1, resulttype_2)) = $free_resulttype(resulttype_1) +++ $free_resulttype(resulttype_2) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:491.1-491.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:491.1-491.34 def $free_subtype(subtype : subtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:550.1-551.66 + ;; ../../../../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-3.0/1.2-syntax.types.spectec:492.1-492.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:492.1-492.34 def $free_rectype(rectype : rectype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:553.1-553.70 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:553.1-553.70 def $free_rectype{`subtype*` : subtype*}(REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},))) = $free_list($free_subtype(subtype)*{subtype <- `subtype*`}) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:520.1-520.34 +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:520.1-520.34 def $free_deftype(deftype : deftype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec:521.1-521.59 + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec:521.1-521.59 def $free_deftype{rectype : rectype, n : n}(_DEF_deftype(rectype, n)) = $free_rectype(rectype) } -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype(tagtype : tagtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tagtype{deftype : deftype}((deftype : deftype <: typeuse)) = $free_deftype(deftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype(globaltype : globaltype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_globaltype{`mut?` : mut?, valtype : valtype}(`%%`_globaltype(mut?{mut <- `mut?`}, valtype)) = $free_valtype(valtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype(memtype : memtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_memtype{addrtype : addrtype, limits : limits}(`%%PAGE`_memtype(addrtype, limits)) = $free_addrtype(addrtype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype(tabletype : tabletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_tabletype{addrtype : addrtype, limits : limits, reftype : reftype}(`%%%`_tabletype(addrtype, limits, reftype)) = $free_addrtype(addrtype) +++ $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(datatype : datatype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_datatype(OK_datatype) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype(elemtype : elemtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_elemtype{reftype : reftype}(reftype) = $free_reftype(reftype) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype(externtype : externtype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tagtype : tagtype}(TAG_externtype(tagtype)) = $free_tagtype(tagtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{globaltype : globaltype}(GLOBAL_externtype(globaltype)) = $free_globaltype(globaltype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{memtype : memtype}(MEM_externtype(memtype)) = $free_memtype(memtype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{tabletype : tabletype}(TABLE_externtype(tabletype)) = $free_tabletype(tabletype) - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_externtype{typeuse : typeuse}(FUNC_externtype(typeuse)) = $free_typeuse(typeuse) -;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec +;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype(moduletype : moduletype) : free - ;; ../../../../specification/wasm-3.0/1.2-syntax.types.spectec + ;; ../../../../specification/wasm-latest/1.2-syntax.types.spectec def $free_moduletype{`externtype_1*` : externtype*, `externtype_2*` : externtype*}(`%->%`_moduletype(externtype_1*{externtype_1 <- `externtype_1*`}, externtype_2*{externtype_2 <- `externtype_2*`})) = $free_list($free_externtype(externtype_1)*{externtype_1 <- `externtype_1*`}) +++ $free_list($free_externtype(externtype_2)*{externtype_2 <- `externtype_2*`}) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Inn : Inn}((Inn : Inn <: numtype)) = iN($sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax num_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = fN($sizenn((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax pack_{Pnn : Pnn}(Pnn) = iN($psizenn(Pnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_(lanetype : lanetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{numtype : numtype}((numtype : numtype <: lanetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{packtype : packtype}((packtype : packtype <: lanetype)) = pack_(packtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lane_{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = iN($lsizenn((Jnn : Jnn <: lanetype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vec_{Vnn : Vnn}(Vnn) = vN($vsizenn(Vnn)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_(storagetype : storagetype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{numtype : numtype}((numtype : numtype <: storagetype)) = num_(numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{vectype : vectype}((vectype : vectype <: storagetype)) = vec_(vectype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax lit_{packtype : packtype}((packtype : packtype <: storagetype)) = pack_(packtype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sz = | `%`(i : nat,) -- if ((((i = 8) \/ (i = 16)) \/ (i = 32)) \/ (i = 64)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax sx = | U | S -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Inn : Inn}((Inn : Inn <: numtype)) = | CLZ | CTZ @@ -25409,7 +25559,7 @@ syntax unop_(numtype : numtype) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax unop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ABS | NEG @@ -25420,9 +25570,9 @@ syntax unop_(numtype : numtype) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Inn : Inn}((Inn : Inn <: numtype)) = | ADD | SUB @@ -25438,7 +25588,7 @@ syntax binop_(numtype : numtype) | ROTR - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax binop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | ADD | SUB @@ -25449,13 +25599,25 @@ syntax binop_(numtype : numtype) | COPYSIGN -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax wideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | ADD128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + | SUB128 + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec +syntax extwideop_{Inn : Inn}((Inn : Inn <: numtype)) = + | MUL_WIDE(sx) + -- if ($sizenn((Inn : Inn <: numtype)) = 64) + +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax testop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQZ -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_(numtype : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Inn : Inn}((Inn : Inn <: numtype)) = | EQ | NE @@ -25465,7 +25627,7 @@ syntax relop_(numtype : numtype) | GE(sx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax relop_{Fnn : Fnn}((Fnn : Fnn <: numtype)) = | EQ | NE @@ -25475,9 +25637,9 @@ syntax relop_(numtype : numtype) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Inn_2 : Inn}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype)) = | EXTEND(sx) -- if ($sizenn1((Inn_1 : Inn <: numtype)) < $sizenn2((Inn_2 : Inn <: numtype))) @@ -25485,14 +25647,14 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Inn_1 : Inn <: numtype)) > $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Inn_1 : Inn, Fnn_2 : Fnn}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype)) = | CONVERT(sx) | REINTERPRET -- if ($sizenn1((Inn_1 : Inn <: numtype)) = $sizenn2((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Inn_2 : Inn}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype)) = | TRUNC(sx) | TRUNC_SAT(sx) @@ -25500,7 +25662,7 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = $sizenn2((Inn_2 : Inn <: numtype))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype)) = | PROMOTE -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) < $sizenn2((Fnn_2 : Fnn <: numtype))) @@ -25508,75 +25670,75 @@ syntax cvtop__(numtype_1 : numtype, numtype_2 : numtype) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) > $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax dim = | `%`(i : nat,) -- if (((((i = 1) \/ (i = 2)) \/ (i = 4)) \/ (i = 8)) \/ (i = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax shape = | `%X%`(lanetype : lanetype, dim : dim) -- if (($lsize(lanetype) * dim!`%`_dim.0) = 128) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax M = dim -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim(shape : shape) : dim - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $dim{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = M -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype(shape : shape) : lanetype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $lanetype{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = Lnn -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape(shape : shape) : numtype - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $unpackshape{Lnn : Lnn, M : M}(`%X%`_shape(Lnn, M)) = $lunpack(Lnn) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax ishape = | `%`(shape : shape,) {Jnn : Jnn} -- if ($lanetype(shape) = (Jnn : Jnn <: lanetype)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax bshape = | `%`(shape : shape,) -- if ($lanetype(shape) = I8_lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax zero = | ZERO -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax half = | LOW | HIGH -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvunop = | NOT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvbinop = | AND | ANDNOT | OR | XOR -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvternop = | BITSELECT -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vvtestop = | ANY_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ABS | NEG @@ -25584,7 +25746,7 @@ syntax vunop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) = 8) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vunop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ABS | NEG @@ -25595,9 +25757,9 @@ syntax vunop_(shape : shape) | NEAREST -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ADD | SUB @@ -25619,7 +25781,7 @@ syntax vbinop_(shape : shape) -- if ($lsizenn((Jnn : Jnn <: lanetype)) <= 32) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vbinop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | ADD | SUB @@ -25633,26 +25795,26 @@ syntax vbinop_(shape : shape) | RELAXED_MAX -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | RELAXED_LANESELECT - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vternop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | RELAXED_MADD | RELAXED_NMADD -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vtestop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | ALL_TRUE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_(shape : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Jnn : Jnn, M : M}(`%X%`_shape((Jnn : Jnn <: lanetype), M)) = | EQ | NE @@ -25666,7 +25828,7 @@ syntax vrelop_(shape : shape) -- if (($lsizenn((Jnn : Jnn <: lanetype)) =/= 64) \/ (sx = S_sx)) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vrelop_{Fnn : Fnn, M : M}(`%X%`_shape((Fnn : Fnn <: lanetype), M)) = | EQ | NE @@ -25676,22 +25838,22 @@ syntax vrelop_(shape : shape) | GE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vshiftop_{Jnn : Jnn, M : M}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),)) = | SHL | SHR(sx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vswizzlop_{M : M}(`%`_bshape(`%X%`_shape(I8_lanetype, M),)) = | SWIZZLE | RELAXED_SWIZZLE -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTADD_PAIRWISE(sx) -- if ((16 <= (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) <= 32))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | EXTMUL(half : half, sx : sx) -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) >= 16)) @@ -25700,26 +25862,26 @@ syntax vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_ | RELAXED_DOTS -- if (((2 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 16)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),)) = | RELAXED_DOT_ADDS -- if (((4 * $lsizenn1((Jnn_1 : Jnn <: lanetype))) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__(shape_1 : shape, shape_2 : shape) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | EXTEND(half : half, sx : sx) -- if ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | CONVERT(`half?` : half?, sx : sx) -- if (((($sizenn2((Fnn_2 : Fnn <: numtype)) = $lsizenn1((Jnn_1 : Jnn <: lanetype))) /\ ($lsizenn1((Jnn_1 : Jnn <: lanetype)) = 32)) /\ (half?{half <- `half?`} = ?())) \/ (($sizenn2((Fnn_2 : Fnn <: numtype)) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) /\ (half?{half <- `half?`} = ?(LOW_half)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2)) = | TRUNC_SAT(sx : sx, `zero?` : zero?) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) @@ -25727,7 +25889,7 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if (((($sizenn1((Fnn_1 : Fnn <: numtype)) = $lsizenn2((Jnn_2 : Jnn <: lanetype))) /\ ($lsizenn2((Jnn_2 : Jnn <: lanetype)) = 32)) /\ (zero?{zero <- `zero?`} = ?())) \/ (($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $lsizenn2((Jnn_2 : Jnn <: lanetype)))) /\ (zero?{zero <- `zero?`} = ?(ZERO_zero)))) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2)) = | DEMOTE(zero) -- if ($sizenn1((Fnn_1 : Fnn <: numtype)) = (2 * $sizenn2((Fnn_2 : Fnn <: numtype)))) @@ -25735,24 +25897,24 @@ syntax vcvtop__(shape_1 : shape, shape_2 : shape) -- if ((2 * $sizenn1((Fnn_1 : Fnn <: numtype))) = $sizenn2((Fnn_2 : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax memarg = { ALIGN u32, OFFSET u64 } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax loadop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%_%`(sz : sz, sx : sx) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax storeop_{Inn : Inn}((Inn : Inn <: numtype)) = | `%`(sz : sz,) -- if (sz!`%`_sz.0 < $sizenn((Inn : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax vloadop_{vectype : vectype}(vectype) = | `SHAPE%X%_%`(sz : sz, M : M, sx : sx) -- if (((sz!`%`_sz.0 * M!`%`_M.0) : nat <:> rat) = (($vsize(vectype) : nat <:> rat) / (2 : nat <:> rat))) @@ -25760,49 +25922,49 @@ syntax vloadop_{vectype : vectype}(vectype) = | ZERO(sz : sz,) -- if (sz!`%`_sz.0 >= 32) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax blocktype = | _RESULT(valtype?) | _IDX(typeidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax addr = nat -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayaddr = addr -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax catch = | CATCH(tagidx : tagidx, labelidx : labelidx) | CATCH_REF(tagidx : tagidx, labelidx : labelidx) | CATCH_ALL(labelidx) | CATCH_ALL_REF(labelidx) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exnaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax dataaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax elemaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globaladdr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax memaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tagaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax externaddr = | TAG(tagaddr) | GLOBAL(globaladdr) @@ -25810,14 +25972,14 @@ syntax externaddr = | TABLE(tableaddr) | FUNC(funcaddr) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exportinst = { NAME name, ADDR externaddr } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax moduleinst = { TYPES deftype*, @@ -25831,16 +25993,16 @@ syntax moduleinst = EXPORTS exportinst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structaddr = addr -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:35.1-43.19 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:35.1-43.19 syntax ref = | `REF.I31_NUM`(u31) | `REF.NULL_ADDR` @@ -25852,7 +26014,7 @@ syntax ref = | `REF.EXTERN`(ref) } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax val = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -25865,17 +26027,17 @@ syntax val = | `REF.HOST_ADDR`(hostaddr) | `REF.EXTERN`(ref) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax frame = { LOCALS val?*, MODULE moduleinst } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:133.1-139.9 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:133.1-139.9 syntax instr = | NOP | UNREACHABLE @@ -25959,6 +26121,8 @@ syntax instr = | TESTOP(numtype : numtype, testop_(numtype)) | RELOP(numtype : numtype, relop_(numtype)) | CVTOP(numtype_1 : numtype, numtype_2 : numtype, cvtop__(numtype_2, numtype_1)) + | WIDEOP(numtype : numtype, wideop_(numtype)) + | EXTWIDEOP(numtype : numtype, extwideop_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) | VVUNOP(vectype : vectype, vvunop : vvunop) | VVBINOP(vectype : vectype, vvbinop : vvbinop) @@ -25998,451 +26162,451 @@ syntax instr = | TRAP } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec syntax expr = instr* -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 : memarg - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $memarg0 = {ALIGN `%`_u32(0,), OFFSET `%`_u64(0,)} -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const(consttype : consttype, lit_ : lit_((consttype : consttype <: storagetype))) : instr - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{numtype : numtype, c : lit_(((numtype : numtype <: consttype) : consttype <: storagetype))}((numtype : numtype <: consttype), c) = CONST_instr(numtype, c) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $const{vectype : vectype, c : lit_(((vectype : vectype <: consttype) : consttype <: storagetype))}((vectype : vectype <: consttype), c) = VCONST_instr(vectype, c) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape(shape : shape) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_shape{lanetype : lanetype, dim : dim}(`%X%`_shape(lanetype, dim)) = $free_lanetype(lanetype) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype(blocktype : blocktype) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{`valtype?` : valtype?}(_RESULT_blocktype(valtype?{valtype <- `valtype?`})) = $free_opt($free_valtype(valtype)?{valtype <- `valtype?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_blocktype{typeidx : typeidx}(_IDX_blocktype(typeidx)) = $free_typeidx(typeidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch(catch : catch) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{tagidx : tagidx, labelidx : labelidx}(CATCH_REF_catch(tagidx, labelidx)) = $free_tagidx(tagidx) +++ $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_catch(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_catch{labelidx : labelidx}(CATCH_ALL_REF_catch(labelidx)) = $free_labelidx(labelidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:585.1-585.44 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:595.1-595.44 def $shift_labelidxs(labelidx*) : labelidx* - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:586.1-586.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:596.1-596.32 def $shift_labelidxs([]) = [] - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:587.1-587.66 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:597.1-597.66 def $shift_labelidxs{`labelidx'*` : labelidx*}([`%`_labelidx(0,)] ++ labelidx'*{labelidx' <- `labelidx'*`}) = $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:588.1-588.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:598.1-598.91 def $shift_labelidxs{labelidx : labelidx, `labelidx'*` : labelidx*}([labelidx] ++ labelidx'*{labelidx' <- `labelidx'*`}) = [`%`_labelidx((((labelidx!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)] ++ $shift_labelidxs(labelidx'*{labelidx' <- `labelidx'*`}) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:421.1-421.30 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:431.1-431.30 def $free_instr(instr : instr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:436.1-436.26 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:446.1-446.26 def $free_instr(NOP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:437.1-437.34 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:447.1-447.34 def $free_instr(UNREACHABLE_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:438.1-438.27 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:448.1-448.27 def $free_instr(DROP_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:439.1-439.86 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:449.1-449.86 def $free_instr{`valtype*?` : valtype*?}(SELECT_instr(valtype*{valtype <- `valtype*`}?{`valtype*` <- `valtype*?`})) = $free_opt($free_list($free_valtype(valtype)*{valtype <- `valtype*`})?{`valtype*` <- `valtype*?`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:441.1-441.92 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:451.1-451.92 def $free_instr{blocktype : blocktype, `instr*` : instr*}(BLOCK_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:442.1-442.91 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:452.1-452.91 def $free_instr{blocktype : blocktype, `instr*` : instr*}(LOOP_instr(blocktype, instr*{instr <- `instr*`})) = $free_blocktype(blocktype) +++ $free_block(instr*{instr <- `instr*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:443.1-444.79 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:453.1-454.79 def $free_instr{blocktype : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}(`IF%%ELSE%`_instr(blocktype, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})) = $free_blocktype(blocktype) +++ $free_block(instr_1*{instr_1 <- `instr_1*`}) +++ $free_block(instr_2*{instr_2 <- `instr_2*`}) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:446.1-446.56 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:456.1-456.56 def $free_instr{labelidx : labelidx}(BR_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:447.1-447.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:457.1-457.59 def $free_instr{labelidx : labelidx}(BR_IF_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:448.1-449.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:458.1-459.69 def $free_instr{`labelidx*` : labelidx*, labelidx' : labelidx}(BR_TABLE_instr(labelidx*{labelidx <- `labelidx*`}, labelidx')) = $free_list($free_labelidx(labelidx)*{labelidx <- `labelidx*`}) +++ $free_labelidx(labelidx') - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:450.1-450.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:460.1-460.64 def $free_instr{labelidx : labelidx}(BR_ON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:451.1-451.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:461.1-461.68 def $free_instr{labelidx : labelidx}(BR_ON_NON_NULL_instr(labelidx)) = $free_labelidx(labelidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:452.1-453.83 + ;; ../../../../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_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:454.1-455.83 + ;; ../../../../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_FAIL_instr(labelidx, reftype_1, reftype_2)) = $free_labelidx(labelidx) +++ $free_reftype(reftype_1) +++ $free_reftype(reftype_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:457.1-457.55 + ;; ../../../../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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/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-3.0/1.3-syntax.instructions.spectec:512.1-512.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:522.1-522.59 def $free_instr{reftype : reftype}(`REF.TEST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:513.1-513.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:523.1-523.59 def $free_instr{reftype : reftype}(`REF.CAST`_instr(reftype)) = $free_reftype(reftype) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:514.1-514.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:524.1-524.59 def $free_instr{funcidx : funcidx}(`REF.FUNC`_instr(funcidx)) = $free_funcidx(funcidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:515.1-515.30 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:525.1-525.30 def $free_instr(`REF.I31`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:517.1-517.33 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:527.1-527.33 def $free_instr{sx : sx}(`I31.GET`_instr(sx)) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:519.1-519.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:529.1-529.61 def $free_instr{typeidx : typeidx}(`STRUCT.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:520.1-520.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:530.1-530.69 def $free_instr{typeidx : typeidx}(`STRUCT.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:521.1-521.69 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:531.1-531.69 def $free_instr{`sx?` : sx?, typeidx : typeidx, u32 : u32}(`STRUCT.GET`_instr(sx?{sx <- `sx?`}, typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:522.1-522.65 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:532.1-532.65 def $free_instr{typeidx : typeidx, u32 : u32}(`STRUCT.SET`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:524.1-524.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:534.1-534.60 def $free_instr{typeidx : typeidx}(`ARRAY.NEW`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:525.1-525.68 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:535.1-535.68 def $free_instr{typeidx : typeidx}(`ARRAY.NEW_DEFAULT`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:526.1-526.70 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:536.1-536.70 def $free_instr{typeidx : typeidx, u32 : u32}(`ARRAY.NEW_FIXED`_instr(typeidx, u32)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:527.1-528.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:537.1-538.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.NEW_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:529.1-530.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:539.1-540.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.NEW_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:531.1-531.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:541.1-541.64 def $free_instr{`sx?` : sx?, typeidx : typeidx}(`ARRAY.GET`_instr(sx?{sx <- `sx?`}, typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:532.1-532.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:542.1-542.60 def $free_instr{typeidx : typeidx}(`ARRAY.SET`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:533.1-533.32 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:543.1-543.32 def $free_instr(`ARRAY.LEN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:534.1-534.61 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:544.1-544.61 def $free_instr{typeidx : typeidx}(`ARRAY.FILL`_instr(typeidx)) = $free_typeidx(typeidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:535.1-536.55 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:545.1-546.55 def $free_instr{typeidx_1 : typeidx, typeidx_2 : typeidx}(`ARRAY.COPY`_instr(typeidx_1, typeidx_2)) = $free_typeidx(typeidx_1) +++ $free_typeidx(typeidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:537.1-538.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:547.1-548.51 def $free_instr{typeidx : typeidx, dataidx : dataidx}(`ARRAY.INIT_DATA`_instr(typeidx, dataidx)) = $free_typeidx(typeidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:539.1-540.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:549.1-550.51 def $free_instr{typeidx : typeidx, elemidx : elemidx}(`ARRAY.INIT_ELEM`_instr(typeidx, elemidx)) = $free_typeidx(typeidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:542.1-542.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:552.1-552.41 def $free_instr(`EXTERN.CONVERT_ANY`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:543.1-543.41 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:553.1-553.41 def $free_instr(`ANY.CONVERT_EXTERN`_instr) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:545.1-545.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:555.1-555.63 def $free_instr{localidx : localidx}(`LOCAL.GET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:546.1-546.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:556.1-556.63 def $free_instr{localidx : localidx}(`LOCAL.SET`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:547.1-547.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:557.1-557.63 def $free_instr{localidx : localidx}(`LOCAL.TEE`_instr(localidx)) = $free_localidx(localidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:549.1-549.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:559.1-559.67 def $free_instr{globalidx : globalidx}(`GLOBAL.GET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:550.1-550.67 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:560.1-560.67 def $free_instr{globalidx : globalidx}(`GLOBAL.SET`_instr(globalidx)) = $free_globalidx(globalidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:552.1-552.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:562.1-562.63 def $free_instr{tableidx : tableidx}(`TABLE.GET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:553.1-553.63 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:563.1-563.63 def $free_instr{tableidx : tableidx}(`TABLE.SET`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:554.1-554.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:564.1-564.64 def $free_instr{tableidx : tableidx}(`TABLE.SIZE`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:555.1-555.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:565.1-565.64 def $free_instr{tableidx : tableidx}(`TABLE.GROW`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:556.1-556.64 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:566.1-566.64 def $free_instr{tableidx : tableidx}(`TABLE.FILL`_instr(tableidx)) = $free_tableidx(tableidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:557.1-558.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:567.1-568.59 def $free_instr{tableidx_1 : tableidx, tableidx_2 : tableidx}(`TABLE.COPY`_instr(tableidx_1, tableidx_2)) = $free_tableidx(tableidx_1) +++ $free_tableidx(tableidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:559.1-560.53 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:569.1-570.53 def $free_instr{tableidx : tableidx, elemidx : elemidx}(`TABLE.INIT`_instr(tableidx, elemidx)) = $free_tableidx(tableidx) +++ $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:561.1-561.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:571.1-571.60 def $free_instr{elemidx : elemidx}(`ELEM.DROP`_instr(elemidx)) = $free_elemidx(elemidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:563.1-564.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:573.1-574.49 def $free_instr{numtype : numtype, `loadop?` : loadop_(numtype)?, memidx : memidx, memarg : memarg}(LOAD_instr(numtype, loadop?{loadop <- `loadop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:565.1-566.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:575.1-576.49 def $free_instr{numtype : numtype, `storeop?` : storeop_(numtype)?, memidx : memidx, memarg : memarg}(STORE_instr(numtype, storeop?{storeop <- `storeop?`}, memidx, memarg)) = $free_numtype(numtype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:567.1-568.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:577.1-578.49 def $free_instr{vectype : vectype, `vloadop?` : vloadop_(vectype)?, memidx : memidx, memarg : memarg}(VLOAD_instr(vectype, vloadop?{vloadop <- `vloadop?`}, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:569.1-570.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:579.1-580.49 def $free_instr{vectype : vectype, sz : sz, memidx : memidx, memarg : memarg, laneidx : laneidx}(VLOAD_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:571.1-572.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:581.1-582.49 def $free_instr{vectype : vectype, memidx : memidx, memarg : memarg}(VSTORE_instr(vectype, memidx, memarg)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:573.1-574.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}(VSTORE_LANE_instr(vectype, sz, memidx, memarg, laneidx)) = $free_vectype(vectype) +++ $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:575.1-575.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:585.1-585.59 def $free_instr{memidx : memidx}(`MEMORY.SIZE`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:576.1-576.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:586.1-586.59 def $free_instr{memidx : memidx}(`MEMORY.GROW`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:577.1-577.59 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:587.1-587.59 def $free_instr{memidx : memidx}(`MEMORY.FILL`_instr(memidx)) = $free_memidx(memidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:578.1-579.51 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:588.1-589.51 def $free_instr{memidx_1 : memidx, memidx_2 : memidx}(`MEMORY.COPY`_instr(memidx_1, memidx_2)) = $free_memidx(memidx_1) +++ $free_memidx(memidx_2) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:580.1-581.49 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:590.1-591.49 def $free_instr{memidx : memidx, dataidx : dataidx}(`MEMORY.INIT`_instr(memidx, dataidx)) = $free_memidx(memidx) +++ $free_dataidx(dataidx) - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:582.1-582.60 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:592.1-592.60 def $free_instr{dataidx : dataidx}(`DATA.DROP`_instr(dataidx)) = $free_dataidx(dataidx) -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:422.1-422.31 +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:432.1-432.31 def $free_block(instr*) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec:590.1-591.47 + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec:600.1-601.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*`})) } -;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec +;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr(expr : expr) : free - ;; ../../../../specification/wasm-3.0/1.3-syntax.instructions.spectec + ;; ../../../../specification/wasm-latest/1.3-syntax.instructions.spectec def $free_expr{`instr*` : instr*}(instr*{instr <- `instr*`}) = $free_list($free_instr(instr)*{instr <- `instr*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elemmode = | ACTIVE(tableidx : tableidx, expr : expr) | PASSIVE | DECLARE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax datamode = | ACTIVE(memidx : memidx, expr : expr) | PASSIVE -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax type = | TYPE(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax tag = | TAG(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax global = | GLOBAL(globaltype : globaltype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax mem = | MEMORY(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax table = | TABLE(tabletype : tabletype, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax data = | DATA(`byte*` : byte*, datamode : datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax local = | LOCAL(valtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax func = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax elem = | ELEM(reftype : reftype, `expr*` : expr*, elemmode : elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax start = | START(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax import = | IMPORT(name : name, name : name, externtype : externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax export = | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec syntax module = | MODULE(list(syntax type), list(syntax import), list(syntax tag), list(syntax global), list(syntax mem), list(syntax table), list(syntax func), list(syntax data), list(syntax elem), `start?` : start?, list(syntax export)) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type(type : type) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_type{rectype : rectype}(TYPE_type(rectype)) = $free_rectype(rectype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag(tag : tag) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_tag{tagtype : tagtype}(TAG_tag(tagtype)) = $free_tagtype(tagtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global(global : global) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_global{globaltype : globaltype, expr : expr}(GLOBAL_global(globaltype, expr)) = $free_globaltype(globaltype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem(mem : mem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_mem{memtype : memtype}(MEMORY_mem(memtype)) = $free_memtype(memtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table(table : table) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_table{tabletype : tabletype, expr : expr}(TABLE_table(tabletype, expr)) = $free_tabletype(tabletype) +++ $free_expr(expr) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local(local : local) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_local{t : valtype}(LOCAL_local(t)) = $free_valtype(t) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func(func : func) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_func{typeidx : typeidx, `local*` : local*, expr : expr}(FUNC_func(typeidx, local*{local <- `local*`}, expr)) = $free_typeidx(typeidx) +++ $free_list($free_local(local)*{local <- `local*`}) +++ $free_block(expr)[LOCALS_free = []] -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(datamode : datamode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode{memidx : memidx, expr : expr}(ACTIVE_datamode(memidx, expr)) = $free_memidx(memidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_datamode(PASSIVE_datamode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data(data : data) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_data{`byte*` : byte*, datamode : datamode}(DATA_data(byte*{byte <- `byte*`}, datamode)) = $free_datamode(datamode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(elemmode : elemmode) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode{tableidx : tableidx, expr : expr}(ACTIVE_elemmode(tableidx, expr)) = $free_tableidx(tableidx) +++ $free_expr(expr) - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(PASSIVE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elemmode(DECLARE_elemmode) = {TYPES [], FUNCS [], GLOBALS [], TABLES [], MEMS [], ELEMS [], DATAS [], LOCALS [], LABELS [], TAGS []} -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem(elem : elem) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_elem{reftype : reftype, `expr*` : expr*, elemmode : elemmode}(ELEM_elem(reftype, expr*{expr <- `expr*`}, elemmode)) = $free_reftype(reftype) +++ $free_list($free_expr(expr)*{expr <- `expr*`}) +++ $free_elemmode(elemmode) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start(start : start) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_start{funcidx : funcidx}(START_start(funcidx)) = $free_funcidx(funcidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import(import : import) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_import{name_1 : name, name_2 : name, externtype : externtype}(IMPORT_import(name_1, name_2, externtype)) = $free_externtype(externtype) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export(export : export) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_export{name : name, externidx : externidx}(EXPORT_export(name, externidx)) = $free_externidx(externidx) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module(module : module) : free - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $free_module{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*}(MODULE_module(`%`_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*`},))) = $free_list($free_type(type)*{type <- `type*`}) +++ $free_list($free_tag(tag)*{tag <- `tag*`}) +++ $free_list($free_global(global)*{global <- `global*`}) +++ $free_list($free_mem(mem)*{mem <- `mem*`}) +++ $free_list($free_table(table)*{table <- `table*`}) +++ $free_list($free_func(func)*{func <- `func*`}) +++ $free_list($free_data(data)*{data <- `data*`}) +++ $free_list($free_elem(elem)*{elem <- `elem*`}) +++ $free_opt($free_start(start)?{start <- `start?`}) +++ $free_list($free_import(import)*{import <- `import*`}) +++ $free_list($free_export(export)*{export <- `export*`}) -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module(module : module) : funcidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $funcidx_module{module : module}(module) = $free_module(module).FUNCS_free -;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec +;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs(func*) : dataidx* - ;; ../../../../specification/wasm-3.0/1.4-syntax.modules.spectec + ;; ../../../../specification/wasm-latest/1.4-syntax.modules.spectec def $dataidx_funcs{`func*` : func*}(func*{func <- `func*`}) = $free_list($free_func(func)*{func <- `func*`}).DATAS_free -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax init = | SET | UNSET -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax localtype = | `%%`(init : init, valtype : valtype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax instrtype = | `%->_%%`(resulttype : resulttype, `localidx*` : localidx*, resulttype : resulttype) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec syntax context = { TYPES deftype*, @@ -26460,235 +26624,235 @@ syntax context = RECS subtype* } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:49.1-49.144 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:49.1-49.144 def $with_locals(context : context, localidx*, localtype*) : context - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:51.1-51.34 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:51.1-51.34 def $with_locals{C : context}(C, [], []) = C - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:52.1-52.90 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:52.1-52.90 def $with_locals{C : context, x_1 : idx, `x*` : idx*, lct_1 : localtype, `lct*` : localtype*}(C, [x_1] ++ x*{x <- `x*`}, [lct_1] ++ lct*{lct <- `lct*`}) = $with_locals(C[LOCALS_context[x_1!`%`_idx.0] = lct_1], x*{x <- `x*`}, lct*{lct <- `lct*`}) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec rec { -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:62.1-62.94 +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:62.1-62.94 def $clos_deftypes(deftype*) : deftype* - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:71.1-71.30 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:71.1-71.30 def $clos_deftypes([]) = [] - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec:72.1-72.101 + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec:72.1-72.101 def $clos_deftypes{`dt*` : deftype*, dt_n : deftype, `dt'*` : deftype*}(dt*{dt <- `dt*`} ++ [dt_n]) = dt'*{dt' <- `dt'*`} ++ [$subst_all_deftype(dt_n, (dt' : deftype <: typeuse)*{dt' <- `dt'*`})] -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(dt*{dt <- `dt*`})) } -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype(context : context, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_valtype{C : context, t : valtype, `dt*` : deftype*}(C, t) = $subst_all_valtype(t, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype(context : context, deftype : deftype) : deftype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_deftype{C : context, dt : deftype, `dt'*` : deftype*}(C, dt) = $subst_all_deftype(dt, (dt' : deftype <: typeuse)*{dt' <- `dt'*`}) -- if (dt'*{dt' <- `dt'*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype(context : context, tagtype : tagtype) : tagtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_tagtype{C : context, jt : tagtype, `dt*` : deftype*}(C, jt) = $subst_all_tagtype(jt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype(context : context, externtype : externtype) : externtype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_externtype{C : context, xt : externtype, `dt*` : deftype*}(C, xt) = $subst_all_externtype(xt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec +;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype(context : context, moduletype : moduletype) : moduletype - ;; ../../../../specification/wasm-3.0/2.0-validation.contexts.spectec + ;; ../../../../specification/wasm-latest/2.0-validation.contexts.spectec def $clos_moduletype{C : context, mmt : moduletype, `dt*` : deftype*}(C, mmt) = $subst_all_moduletype(mmt, (dt : deftype <: typeuse)*{dt <- `dt*`}) -- if (dt*{dt <- `dt*`} = $clos_deftypes(C.TYPES_context)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Numtype_ok: `%|-%:OK`(context, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, numtype : numtype}: `%|-%:OK`(C, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Vectype_ok: `%|-%:OK`(context, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, vectype : vectype}: `%|-%:OK`(C, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypenat = | OK(nat) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Packtype_ok: `%|-%:OK`(context, packtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, packtype : packtype}: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Packtype_sub: `%|-%<:%`(context, packtype, packtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, packtype : packtype}: `%|-%<:%`(C, packtype, packtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Numtype_sub: `%|-%<:%`(context, numtype, numtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, numtype : numtype}: `%|-%<:%`(C, numtype, numtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{deftype : deftype, comptype : comptype, `final?` : final?, `typeuse*` : typeuse*}: `%~~%`(deftype, comptype) -- if ($unrolldt(deftype) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, comptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Vectype_sub: `%|-%<:%`(context, vectype, vectype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, vectype : vectype}: `%|-%<:%`(C, vectype, vectype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before(typeuse : typeuse, nat : nat) : bool - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{j : n, i : nat}(REC_typeuse(j), i) = (j < i) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $before{typeuse : typeuse, i : nat}(typeuse, i) = true -- otherwise -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_(context : context, heaptype : heaptype) : subtype - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, deftype : deftype}(C, (deftype : deftype <: heaptype)) = $unrolldt(deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec def $unrollht_{C : context, i : n}(C, REC_heaptype(i)) = C.RECS_context[i] -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:9.1-9.92 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:9.1-9.92 relation Heaptype_ok: `%|-%:OK`(context, heaptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:20.1-21.24 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:20.1-21.24 rule abs{C : context, absheaptype : absheaptype}: `%|-%:OK`(C, (absheaptype : absheaptype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:23.1-25.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:23.1-25.35 rule typeuse{C : context, typeuse : typeuse}: `%|-%:OK`(C, (typeuse : typeuse <: heaptype)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:27.1-28.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:27.1-28.16 rule bot{C : context}: `%|-%:OK`(C, BOT_heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:10.1-10.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:10.1-10.91 relation Reftype_ok: `%|-%:OK`(context, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:30.1-32.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:30.1-32.37 rule _{C : context, heaptype : heaptype}: `%|-%:OK`(C, REF_reftype(NULL_null?{}, heaptype)) -- Heaptype_ok: `%|-%:OK`(C, heaptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:11.1-11.91 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:11.1-11.91 relation Valtype_ok: `%|-%:OK`(context, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:34.1-36.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:34.1-36.35 rule num{C : context, numtype : numtype}: `%|-%:OK`(C, (numtype : numtype <: valtype)) -- Numtype_ok: `%|-%:OK`(C, numtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:38.1-40.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:38.1-40.35 rule vec{C : context, vectype : vectype}: `%|-%:OK`(C, (vectype : vectype <: valtype)) -- Vectype_ok: `%|-%:OK`(C, vectype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:42.1-44.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:42.1-44.35 rule ref{C : context, reftype : reftype}: `%|-%:OK`(C, (reftype : reftype <: valtype)) -- Reftype_ok: `%|-%:OK`(C, reftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:46.1-47.16 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:46.1-47.16 rule bot{C : context}: `%|-%:OK`(C, BOT_valtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:12.1-12.94 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:12.1-12.94 relation Typeuse_ok: `%|-%:OK`(context, typeuse) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:106.1-108.30 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:106.1-108.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-3.0/2.1-validation.types.spectec:110.1-112.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:110.1-112.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-3.0/2.1-validation.types.spectec:114.1-116.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:114.1-116.35 rule deftype{C : context, deftype : deftype}: `%|-%:OK`(C, (deftype : deftype <: typeuse)) -- Deftype_ok: `%|-%:OK`(C, deftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:53.1-53.100 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:53.1-53.100 relation Resulttype_ok: `%|-%:OK`(context, resulttype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:60.1-62.32 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:60.1-62.32 rule _{C : context, `t*` : valtype*}: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -- (Valtype_ok: `%|-%:OK`(C, t))*{t <- `t*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:92.1-92.104 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:92.1-92.104 relation Fieldtype_ok: `%|-%:OK`(context, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:130.1-132.43 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:130.1-132.43 rule _{C : context, storagetype : storagetype}: `%|-%:OK`(C, `%%`_fieldtype(MUT_mut?{}, storagetype)) -- Storagetype_ok: `%|-%:OK`(C, storagetype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:93.1-93.106 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:93.1-93.106 relation Storagetype_ok: `%|-%:OK`(context, storagetype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:122.1-124.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:122.1-124.35 rule val{C : context, valtype : valtype}: `%|-%:OK`(C, (valtype : valtype <: storagetype)) -- Valtype_ok: `%|-%:OK`(C, valtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:126.1-128.37 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:126.1-128.37 rule pack{C : context, packtype : packtype}: `%|-%:OK`(C, (packtype : packtype <: storagetype)) -- Packtype_ok: `%|-%:OK`(C, packtype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:94.1-94.103 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:94.1-94.103 relation Comptype_ok: `%|-%:OK`(context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:135.1-137.42 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:135.1-137.42 rule struct{C : context, `fieldtype*` : fieldtype*}: `%|-%:OK`(C, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) -- (Fieldtype_ok: `%|-%:OK`(C, fieldtype))*{fieldtype <- `fieldtype*`} - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:139.1-141.39 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:139.1-141.39 rule array{C : context, fieldtype : fieldtype}: `%|-%:OK`(C, ARRAY_comptype(fieldtype)) -- Fieldtype_ok: `%|-%:OK`(C, fieldtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:143.1-146.35 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:143.1-146.35 rule func{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:OK`(C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:97.1-97.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:97.1-97.126 relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:167.1-176.49 + ;; ../../../../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) @@ -26700,251 +26864,251 @@ relation Subtype_ok2: `%|-%:%`(context, subtype, oktypenat) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:98.1-98.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:98.1-98.126 relation Rectype_ok2: `%|-%:%`(context, rectype, oktypenat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:188.1-189.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:188.1-189.23 rule empty{C : context, i : nat}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypenat(i)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:191.1-194.49 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:191.1-194.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-3.0/2.1-validation.types.spectec:99.1-99.102 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:99.1-99.102 relation Deftype_ok: `%|-%:OK`(context, deftype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:197.1-201.14 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:197.1-201.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-3.0/2.1-validation.types.spectec:102.1-102.108 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:102.1-102.108 relation Comptype_sub: `%|-%<:%`(context, comptype, comptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:181.1-183.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:181.1-183.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-3.0/2.2-validation.subtyping.spectec:185.1-187.38 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:185.1-187.38 rule array{C : context, ft_1 : fieldtype, ft_2 : fieldtype}: `%|-%<:%`(C, ARRAY_comptype(ft_1), ARRAY_comptype(ft_2)) -- Fieldtype_sub: `%|-%<:%`(C, ft_1, ft_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:189.1-192.41 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:189.1-192.41 rule func{C : context, `t_11*` : valtype*, `t_12*` : valtype*, `t_21*` : valtype*, `t_22*` : valtype*}: `%|-%<:%`(C, `FUNC%->%`_comptype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `FUNC%->%`_comptype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_12*{t_12 <- `t_12*`},), `%`_resulttype(t_22*{t_22 <- `t_22*`},)) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:103.1-103.107 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:103.1-103.107 relation Deftype_sub: `%|-%<:%`(context, deftype, deftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:195.1-197.66 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:195.1-197.66 rule refl{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($clos_deftype(C, deftype_1) = $clos_deftype(C, deftype_2)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:199.1-202.49 + ;; ../../../../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}: `%|-%<:%`(C, deftype_1, deftype_2) -- if ($unrolldt(deftype_1) = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) -- if (i < |typeuse*{typeuse <- `typeuse*`}|) -- Heaptype_sub: `%|-%<:%`(C, (typeuse*{typeuse <- `typeuse*`}[i] : typeuse <: heaptype), (deftype_2 : deftype <: heaptype)) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:9.1-9.104 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:9.1-9.104 relation Heaptype_sub: `%|-%<:%`(context, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:20.1-21.28 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:20.1-21.28 rule refl{C : context, heaptype : heaptype}: `%|-%<:%`(C, heaptype, heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:23.1-27.48 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:23.1-27.48 rule trans{C : context, heaptype_1 : heaptype, heaptype_2 : heaptype, heaptype' : heaptype}: `%|-%<:%`(C, heaptype_1, heaptype_2) -- Heaptype_ok: `%|-%:OK`(C, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype_1, heaptype') -- Heaptype_sub: `%|-%<:%`(C, heaptype', heaptype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:29.1-30.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:29.1-30.17 rule `eq-any`{C : context}: `%|-%<:%`(C, EQ_heaptype, ANY_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:32.1-33.17 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:32.1-33.17 rule `i31-eq`{C : context}: `%|-%<:%`(C, I31_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:35.1-36.20 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:35.1-36.20 rule `struct-eq`{C : context}: `%|-%<:%`(C, STRUCT_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:38.1-39.19 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:38.1-39.19 rule `array-eq`{C : context}: `%|-%<:%`(C, ARRAY_heaptype, EQ_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:41.1-43.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:41.1-43.42 rule struct{C : context, deftype : deftype, `fieldtype*` : fieldtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), STRUCT_heaptype) -- Expand: `%~~%`(deftype, STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:45.1-47.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:45.1-47.40 rule array{C : context, deftype : deftype, fieldtype : fieldtype}: `%|-%<:%`(C, (deftype : deftype <: heaptype), ARRAY_heaptype) -- Expand: `%~~%`(deftype, ARRAY_comptype(fieldtype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:49.1-51.42 rule func{C : context, deftype : deftype, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, (deftype : deftype <: heaptype), FUNC_heaptype) -- Expand: `%~~%`(deftype, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:53.1-55.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:53.1-55.46 rule def{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: heaptype), (deftype_2 : deftype <: heaptype)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:57.1-59.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:57.1-59.53 rule `typeidx-l`{C : context, typeidx : typeidx, heaptype : heaptype}: `%|-%<:%`(C, _IDX_heaptype(typeidx), heaptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype), heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:61.1-63.53 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:61.1-63.53 rule `typeidx-r`{C : context, heaptype : heaptype, typeidx : typeidx}: `%|-%<:%`(C, heaptype, _IDX_heaptype(typeidx)) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Heaptype_sub: `%|-%<:%`(C, heaptype, (C.TYPES_context[typeidx!`%`_typeidx.0] : deftype <: heaptype)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:65.1-67.51 + ;; ../../../../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 (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], STRUCT_comptype(`%`_list(fieldtype*{fieldtype <- `fieldtype*`},)))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:69.1-71.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:69.1-71.49 rule `rec-array`{C : context, i : n, `final?` : final?, fieldtype : fieldtype}: `%|-%<:%`(C, REC_heaptype(i), ARRAY_heaptype) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, [], ARRAY_comptype(fieldtype))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:73.1-75.51 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:73.1-75.51 rule `rec-func`{C : context, i : n, `final?` : final?, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%<:%`(C, REC_heaptype(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*`},)))) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:77.1-79.43 + ;; ../../../../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 (j < |typeuse*{typeuse <- `typeuse*`}|) -- if (i < |C.RECS_context|) -- if (C.RECS_context[i] = SUB_subtype(final?{final <- `final?`}, typeuse*{typeuse <- `typeuse*`}, ct)) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:81.1-84.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:81.1-84.25 rule none{C : context, heaptype : heaptype}: `%|-%<:%`(C, NONE_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, ANY_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:86.1-89.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:86.1-89.25 rule nofunc{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOFUNC_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, FUNC_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:91.1-94.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:91.1-94.25 rule noexn{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:96.1-99.25 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:96.1-99.25 rule noextern{C : context, heaptype : heaptype}: `%|-%<:%`(C, NOEXTERN_heaptype, heaptype) -- Heaptype_sub: `%|-%<:%`(C, heaptype, EXTERN_heaptype) -- if (heaptype =/= BOT_heaptype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:101.1-102.23 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:101.1-102.23 rule bot{C : context, heaptype : heaptype}: `%|-%<:%`(C, BOT_heaptype, heaptype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:10.1-10.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:10.1-10.103 relation Reftype_sub: `%|-%<:%`(context, reftype, reftype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:105.1-107.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:105.1-107.37 rule nonnull{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(?(), ht_1), REF_reftype(?(), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:109.1-111.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:109.1-111.37 rule null{C : context, ht_1 : heaptype, ht_2 : heaptype}: `%|-%<:%`(C, REF_reftype(NULL_null?{}, ht_1), REF_reftype(?(NULL_null), ht_2)) -- Heaptype_sub: `%|-%<:%`(C, ht_1, ht_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:11.1-11.103 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:11.1-11.103 relation Valtype_sub: `%|-%<:%`(context, valtype, valtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:114.1-116.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:114.1-116.46 rule num{C : context, numtype_1 : numtype, numtype_2 : numtype}: `%|-%<:%`(C, (numtype_1 : numtype <: valtype), (numtype_2 : numtype <: valtype)) -- Numtype_sub: `%|-%<:%`(C, numtype_1, numtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:118.1-120.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:118.1-120.46 rule vec{C : context, vectype_1 : vectype, vectype_2 : vectype}: `%|-%<:%`(C, (vectype_1 : vectype <: valtype), (vectype_2 : vectype <: valtype)) -- Vectype_sub: `%|-%<:%`(C, vectype_1, vectype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:122.1-124.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:122.1-124.46 rule ref{C : context, reftype_1 : reftype, reftype_2 : reftype}: `%|-%<:%`(C, (reftype_1 : reftype <: valtype), (reftype_2 : reftype <: valtype)) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:126.1-127.22 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:126.1-127.22 rule bot{C : context, valtype : valtype}: `%|-%<:%`(C, BOT_valtype, valtype) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:132.1-132.115 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:132.1-132.115 relation Resulttype_sub: `%|-%<:%`(context, resulttype, resulttype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:135.1-137.37 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:135.1-137.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-3.0/2.2-validation.subtyping.spectec:150.1-150.119 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:150.1-150.119 relation Storagetype_sub: `%|-%<:%`(context, storagetype, storagetype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:162.1-164.46 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:162.1-164.46 rule val{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, (valtype_1 : valtype <: storagetype), (valtype_2 : valtype <: storagetype)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:166.1-168.49 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:166.1-168.49 rule pack{C : context, packtype_1 : packtype, packtype_2 : packtype}: `%|-%<:%`(C, (packtype_1 : packtype <: storagetype), (packtype_2 : packtype <: storagetype)) -- Packtype_sub: `%|-%<:%`(C, packtype_1, packtype_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:151.1-151.117 +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:151.1-151.117 relation Fieldtype_sub: `%|-%<:%`(context, fieldtype, fieldtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:171.1-173.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:171.1-173.40 rule const{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(), zt_1), `%%`_fieldtype(?(), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec:175.1-178.40 + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec:175.1-178.40 rule var{C : context, zt_1 : storagetype, zt_2 : storagetype}: `%|-%<:%`(C, `%%`_fieldtype(?(MUT_mut), zt_1), `%%`_fieldtype(?(MUT_mut), zt_2)) -- Storagetype_sub: `%|-%<:%`(C, zt_1, zt_2) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Localtype_ok: `%|-%:OK`(context, localtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, init : init, t : valtype}: `%|-%:OK`(C, `%%`_localtype(init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Instrtype_ok: `%|-%:OK`(context, instrtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*, `lct*` : localtype*}: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t_1*{t_1 <- `t_1*`},)) @@ -26953,26 +27117,26 @@ relation Instrtype_ok: `%|-%:OK`(context, instrtype) -- (if (x!`%`_idx.0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[x!`%`_idx.0] = lct))*{lct <- `lct*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Expand_use: `%~~_%%`(typeuse, context, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule deftype{deftype : deftype, C : context, comptype : comptype}: `%~~_%%`((deftype : deftype <: typeuse), C, comptype) -- Expand: `%~~%`(deftype, comptype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule typeidx{typeidx : typeidx, C : context, comptype : comptype}: `%~~_%%`(_IDX_typeuse(typeidx), C, comptype) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], comptype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec syntax oktypeidx = | OK(typeidx) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- if (|x*{x <- `x*`}| <= 1) @@ -26984,91 +27148,91 @@ relation Subtype_ok: `%|-%:%`(context, subtype, oktypeidx) -- Comptype_ok: `%|-%:OK`(C, comptype) -- (Comptype_sub: `%|-%<:%`(C, comptype, comptype'))*{comptype' <- `comptype'*`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rec { -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:96.1-96.126 +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:96.1-96.126 relation Rectype_ok: `%|-%:%`(context, rectype, oktypeidx) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:179.1-180.23 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:179.1-180.23 rule empty{C : context, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([],)), OK_oktypeidx(x)) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec:182.1-185.48 + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec:182.1-185.48 rule cons{C : context, subtype_1 : subtype, `subtype*` : subtype*, x : idx}: `%|-%:%`(C, REC_rectype(`%`_list([subtype_1] ++ subtype*{subtype <- `subtype*`},)), OK_oktypeidx(x)) -- Subtype_ok: `%|-%:%`(C, subtype_1, OK_oktypeidx(x)) -- Rectype_ok: `%|-%:%`(C, REC_rectype(`%`_list(subtype*{subtype <- `subtype*`},)), OK_oktypeidx(`%`_typeidx((x!`%`_idx.0 + 1),))) } -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Limits_ok: `%|-%:%`(context, limits, nat) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, n : n, `m?` : m?, k : nat}: `%|-%:%`(C, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), k) -- if (n <= k) -- (if ((n <= m) /\ (m <= k)))?{m <- `m?`} -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tagtype_ok: `%|-%:OK`(context, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, typeuse : typeuse, `t_1*` : valtype*}: `%|-%:OK`(C, typeuse) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Globaltype_ok: `%|-%:OK`(context, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, t : valtype}: `%|-%:OK`(C, `%%`_globaltype(MUT_mut?{}, t)) -- Valtype_ok: `%|-%:OK`(C, t) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Memtype_ok: `%|-%:OK`(context, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits}: `%|-%:OK`(C, `%%PAGE`_memtype(addrtype, limits)) -- Limits_ok: `%|-%:%`(C, limits, (2 ^ ((($size((addrtype : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Tabletype_ok: `%|-%:OK`(context, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule _{C : context, addrtype : addrtype, limits : limits, reftype : reftype}: `%|-%:OK`(C, `%%%`_tabletype(addrtype, limits, reftype)) -- Limits_ok: `%|-%:%`(C, limits, ((((2 ^ $size((addrtype : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) -- Reftype_ok: `%|-%:OK`(C, reftype) -;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec +;; ../../../../specification/wasm-latest/2.1-validation.types.spectec relation Externtype_ok: `%|-%:OK`(context, externtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule tag{C : context, tagtype : tagtype}: `%|-%:OK`(C, TAG_externtype(tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule global{C : context, globaltype : globaltype}: `%|-%:OK`(C, GLOBAL_externtype(globaltype)) -- Globaltype_ok: `%|-%:OK`(C, globaltype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule mem{C : context, memtype : memtype}: `%|-%:OK`(C, MEM_externtype(memtype)) -- Memtype_ok: `%|-%:OK`(C, memtype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../specification/wasm-latest/2.1-validation.types.spectec rule table{C : context, tabletype : tabletype}: `%|-%:OK`(C, TABLE_externtype(tabletype)) -- Tabletype_ok: `%|-%:OK`(C, tabletype) - ;; ../../../../specification/wasm-3.0/2.1-validation.types.spectec + ;; ../../../../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)) -- Typeuse_ok: `%|-%:OK`(C, typeuse) -- Expand_use: `%~~_%%`(typeuse, C, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, `t_11*` : valtype*, `x_1*` : idx*, `t_12*` : valtype*, `t_21*` : valtype*, `x_2*` : idx*, `t_22*` : valtype*, `x*` : idx*, `t*` : valtype*}: `%|-%<:%`(C, `%->_%%`_instrtype(`%`_resulttype(t_11*{t_11 <- `t_11*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_12*{t_12 <- `t_12*`},)), `%->_%%`_instrtype(`%`_resulttype(t_21*{t_21 <- `t_21*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_22*{t_22 <- `t_22*`},))) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t_21*{t_21 <- `t_21*`},), `%`_resulttype(t_11*{t_11 <- `t_11*`},)) @@ -27078,99 +27242,99 @@ relation Instrtype_sub: `%|-%<:%`(context, instrtype, instrtype) -- (if (x!`%`_idx.0 < |C.LOCALS_context|))*{x <- `x*`} -- (if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)))*{t <- `t*`, x <- `x*`} -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Limits_sub: `%|-%<:%`(context, limits, limits) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule max{C : context, n_1 : n, m_1 : m, n_2 : n, `m_2?` : m?}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?(`%`_u64(m_1,))), `[%..%]`_limits(`%`_u64(n_2,), `%`_u64(m_2,)?{m_2 <- `m_2?`})) -- if (n_1 >= n_2) -- (if (m_1 <= m_2))?{m_2 <- `m_2?`} - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule eps{C : context, n_1 : n, n_2 : n}: `%|-%<:%`(C, `[%..%]`_limits(`%`_u64(n_1,), ?()), `[%..%]`_limits(`%`_u64(n_2,), ?())) -- if (n_1 >= n_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tagtype_sub: `%|-%<:%`(context, tagtype, tagtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, deftype_1 : deftype, deftype_2 : deftype}: `%|-%<:%`(C, (deftype_1 : deftype <: typeuse), (deftype_2 : deftype <: typeuse)) -- Deftype_sub: `%|-%<:%`(C, deftype_1, deftype_2) -- Deftype_sub: `%|-%<:%`(C, deftype_2, deftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Globaltype_sub: `%|-%<:%`(context, globaltype, globaltype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule const{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(), valtype_1), `%%`_globaltype(?(), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule var{C : context, valtype_1 : valtype, valtype_2 : valtype}: `%|-%<:%`(C, `%%`_globaltype(?(MUT_mut), valtype_1), `%%`_globaltype(?(MUT_mut), valtype_2)) -- Valtype_sub: `%|-%<:%`(C, valtype_1, valtype_2) -- Valtype_sub: `%|-%<:%`(C, valtype_2, valtype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Memtype_sub: `%|-%<:%`(context, memtype, memtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, limits_2 : limits}: `%|-%<:%`(C, `%%PAGE`_memtype(addrtype, limits_1), `%%PAGE`_memtype(addrtype, limits_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Tabletype_sub: `%|-%<:%`(context, tabletype, tabletype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule _{C : context, addrtype : addrtype, limits_1 : limits, reftype_1 : reftype, limits_2 : limits, reftype_2 : reftype}: `%|-%<:%`(C, `%%%`_tabletype(addrtype, limits_1, reftype_1), `%%%`_tabletype(addrtype, limits_2, reftype_2)) -- Limits_sub: `%|-%<:%`(C, limits_1, limits_2) -- Reftype_sub: `%|-%<:%`(C, reftype_1, reftype_2) -- Reftype_sub: `%|-%<:%`(C, reftype_2, reftype_1) -;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec +;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec relation Externtype_sub: `%|-%<:%`(context, externtype, externtype) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule tag{C : context, tagtype_1 : tagtype, tagtype_2 : tagtype}: `%|-%<:%`(C, TAG_externtype(tagtype_1), TAG_externtype(tagtype_2)) -- Tagtype_sub: `%|-%<:%`(C, tagtype_1, tagtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule global{C : context, globaltype_1 : globaltype, globaltype_2 : globaltype}: `%|-%<:%`(C, GLOBAL_externtype(globaltype_1), GLOBAL_externtype(globaltype_2)) -- Globaltype_sub: `%|-%<:%`(C, globaltype_1, globaltype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule mem{C : context, memtype_1 : memtype, memtype_2 : memtype}: `%|-%<:%`(C, MEM_externtype(memtype_1), MEM_externtype(memtype_2)) -- Memtype_sub: `%|-%<:%`(C, memtype_1, memtype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../specification/wasm-latest/2.2-validation.subtyping.spectec rule table{C : context, tabletype_1 : tabletype, tabletype_2 : tabletype}: `%|-%<:%`(C, TABLE_externtype(tabletype_1), TABLE_externtype(tabletype_2)) -- Tabletype_sub: `%|-%<:%`(C, tabletype_1, tabletype_2) - ;; ../../../../specification/wasm-3.0/2.2-validation.subtyping.spectec + ;; ../../../../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) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Blocktype_ok: `%|-%:%`(context, blocktype, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule valtype{C : context, `valtype?` : valtype?}: `%|-%:%`(C, _RESULT_blocktype(valtype?{valtype <- `valtype?`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(valtype?{valtype <- `valtype?`}),))) -- (Valtype_ok: `%|-%:OK`(C, valtype))?{valtype <- `valtype?`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule typeidx{C : context, typeidx : typeidx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, _IDX_blocktype(typeidx), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (typeidx!`%`_typeidx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[typeidx!`%`_typeidx.0], `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Catch_ok: `%|-%:OK`(context, catch) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_catch(x, l)) -- if (x!`%`_idx.0 < |C.TAGS_context|) @@ -27178,7 +27342,7 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_ref{C : context, x : idx, l : labelidx, `t*` : valtype*}: `%|-%:OK`(C, CATCH_REF_catch(x, l)) -- if (x!`%`_idx.0 < |C.TAGS_context|) @@ -27186,115 +27350,115 @@ relation Catch_ok: `%|-%:OK`(context, catch) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_catch(l)) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([],), C.LABELS_context[l!`%`_labelidx.0]) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule catch_all_ref{C : context, l : labelidx}: `%|-%:OK`(C, CATCH_ALL_REF_catch(l)) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype([REF_valtype(?(), EXN_heaptype)],), C.LABELS_context[l!`%`_labelidx.0]) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_(valtype : valtype) : val? - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Inn : Inn}((Inn : Inn <: valtype)) = ?(CONST_val((Inn : Inn <: numtype), `%`_num_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Fnn : Fnn}((Fnn : Fnn <: valtype)) = ?(CONST_val((Fnn : Fnn <: numtype), $fzero($size((Fnn : Fnn <: numtype))))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{Vnn : Vnn}((Vnn : Vnn <: valtype)) = ?(VCONST_val(Vnn, `%`_vec_(0,))) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(NULL_null), ht)) = ?(`REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec def $default_{ht : heaptype}(REF_valtype(?(), ht)) = ?() -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Defaultable: `|-%DEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%DEFAULTABLE`(t,) -- if ($default_(t) =/= ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Memarg_ok: `|-%:%->%`(memarg, addrtype, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{n : n, m : m, at : addrtype, N : N}: `|-%:%->%`({ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}, at, N) -- if (((2 ^ n) : nat <:> rat) <= ((N : nat <:> rat) / (8 : nat <:> rat))) -- if (m < (2 ^ $size((at : addrtype <: numtype)))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype(storagetype : storagetype) : bool - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec def $is_packtype{zt : storagetype}(zt) = (zt =/= ($unpack(zt) : valtype <: storagetype)) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:5.1-5.95 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:5.1-5.95 relation Instr_ok: `%|-%:%`(context, instr, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:18.1-19.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:18.1-19.24 rule nop{C : context}: `%|-%:%`(C, NOP_instr, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:21.1-23.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:21.1-23.42 rule unreachable{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, UNREACHABLE_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:25.1-27.29 rule drop{C : context, t : valtype}: `%|-%:%`(C, DROP_instr, `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:29.1-31.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:29.1-31.29 rule `select-expl`{C : context, t : valtype}: `%|-%:%`(C, SELECT_instr(?([t])), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:33.1-37.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:33.1-37.37 rule `select-impl`{C : context, t : valtype, t' : valtype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, SELECT_instr(?()), `%->_%%`_instrtype(`%`_resulttype([t t I32_valtype],), [], `%`_resulttype([t],))) -- Valtype_ok: `%|-%:OK`(C, t) -- Valtype_sub: `%|-%<:%`(C, t, t') -- if ((t' = (numtype : numtype <: valtype)) \/ (t' = (vectype : vectype <: valtype))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:53.1-56.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:53.1-56.67 rule block{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, BLOCK_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:58.1-61.67 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:58.1-61.67 rule loop{C : context, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, LOOP_instr(bt, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_1*{t_1 <- `t_1*`},)], 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:63.1-67.71 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:63.1-67.71 rule if{C : context, bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x_1*` : idx*, `x_2*` : idx*}: `%|-%:%`(C, `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_1*{instr_1 <- `instr_1*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t_2*{t_2 <- `t_2*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:72.1-75.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:72.1-75.42 rule br{C : context, l : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_instr(l), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:77.1-79.25 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:77.1-79.25 rule br_if{C : context, l : labelidx, `t*` : valtype*}: `%|-%:%`(C, BR_IF_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:81.1-85.49 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:81.1-85.49 rule br_table{C : context, `l*` : labelidx*, l' : labelidx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, BR_TABLE_instr(l*{l <- `l*`}, l'), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (if (l!`%`_labelidx.0 < |C.LABELS_context|))*{l <- `l*`} @@ -27303,20 +27467,20 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Resulttype_sub: `%|-%<:%`(C, `%`_resulttype(t*{t <- `t*`},), C.LABELS_context[l'!`%`_labelidx.0]) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`} ++ [I32_valtype],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:87.1-90.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:87.1-90.31 rule br_on_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(), ht)],))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0]!`%`_resulttype.0 = t*{t <- `t*`}) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:92.1-94.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:92.1-94.40 rule br_on_non_null{C : context, l : labelidx, `t*` : valtype*, ht : heaptype}: `%|-%:%`(C, BR_ON_NON_NULL_instr(l), `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype(t*{t <- `t*`},))) -- if (l!`%`_labelidx.0 < |C.LABELS_context|) -- if (C.LABELS_context[l!`%`_labelidx.0] = `%`_resulttype(t*{t <- `t*`} ++ [REF_valtype(NULL_null?{}, ht)],)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:96.1-102.34 + ;; ../../../../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}: `%|-%:%`(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|) @@ -27326,7 +27490,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:104.1-110.49 + ;; ../../../../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}: `%|-%:%`(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|) @@ -27336,19 +27500,19 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Reftype_sub: `%|-%<:%`(C, rt_2, rt_1) -- Reftype_sub: `%|-%<:%`(C, $diffrt(rt_1, rt_2), rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:115.1-117.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:115.1-117.45 rule call{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- 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*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:119.1-121.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:119.1-121.45 rule call_ref{C : context, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- 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-3.0/2.3-validation.instructions.spectec:123.1-127.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:123.1-127.45 rule call_indirect{C : context, x : idx, y : idx, `t_1*` : valtype*, at : addrtype, `t_2*` : valtype*, lim : limits, rt : reftype}: `%|-%:%`(C, CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (x!`%`_idx.0 < |C.TABLES_context|) @@ -27357,13 +27521,13 @@ 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-3.0/2.3-validation.instructions.spectec:129.1-132.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:129.1-132.42 rule return{C : context, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, RETURN_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- if (C.RETURN_context = ?(`%`_resulttype(t*{t <- `t*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:135.1-140.42 + ;; ../../../../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*}: `%|-%:%`(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|) @@ -27372,7 +27536,7 @@ 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-3.0/2.3-validation.instructions.spectec:143.1-148.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:143.1-148.42 rule return_call_ref{C : context, x : idx, `t_3*` : valtype*, `t_1*` : valtype*, `t_4*` : valtype*, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_REF_instr(_IDX_typeuse(x)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), _IDX_heaptype(x))],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27381,7 +27545,7 @@ 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-3.0/2.3-validation.instructions.spectec:151.1-159.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:151.1-159.42 rule return_call_indirect{C : context, x : idx, y : idx, `t_3*` : valtype*, `t_1*` : valtype*, at : addrtype, `t_4*` : valtype*, lim : limits, rt : reftype, `t_2*` : valtype*, `t'_2*` : valtype*}: `%|-%:%`(C, RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)), `%->_%%`_instrtype(`%`_resulttype(t_3*{t_3 <- `t_3*`} ++ t_1*{t_1 <- `t_1*`} ++ [(at : addrtype <: valtype)],), [], `%`_resulttype(t_4*{t_4 <- `t_4*`},))) -- if (x!`%`_idx.0 < |C.TABLES_context|) @@ -27393,31 +27557,31 @@ 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-3.0/2.3-validation.instructions.spectec:166.1-169.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:166.1-169.42 rule throw{C : context, x : idx, `t_1*` : valtype*, `t*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_instr(x), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ t*{t <- `t*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- 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-3.0/2.3-validation.instructions.spectec:171.1-173.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:171.1-173.42 rule throw_ref{C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, THROW_REF_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), EXN_heaptype)],), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:175.1-179.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:175.1-179.34 rule try_table{C : context, bt : blocktype, `catch*` : catch*, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*, `x*` : idx*}: `%|-%:%`(C, TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, bt, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`({TYPES [], 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-3.0/2.3-validation.instructions.spectec:202.1-204.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:202.1-204.31 rule `ref.null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.NULL`_instr(ht), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([REF_valtype(?(NULL_null), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:206.1-209.20 + ;; ../../../../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 (x!`%`_idx.0 < |C.FUNCS_context|) @@ -27425,56 +27589,56 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (|C.REFS_context| > 0) -- if (x <- C.REFS_context) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:211.1-212.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:211.1-212.34 rule `ref.i31`{C : context}: `%|-%:%`(C, `REF.I31`_instr, `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), I31_heaptype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:214.1-216.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:214.1-216.31 rule `ref.is_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.IS_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([I32_valtype],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:218.1-220.31 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:218.1-220.31 rule `ref.as_non_null`{C : context, ht : heaptype}: `%|-%:%`(C, `REF.AS_NON_NULL`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ht)],), [], `%`_resulttype([REF_valtype(?(), ht)],))) -- Heaptype_ok: `%|-%:OK`(C, ht) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:222.1-223.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:222.1-223.51 rule `ref.eq`{C : context}: `%|-%:%`(C, `REF.EQ`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), EQ_heaptype) REF_valtype(?(NULL_null), EQ_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:225.1-229.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:225.1-229.33 rule `ref.test`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.TEST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([I32_valtype],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:231.1-235.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:231.1-235.33 rule `ref.cast`{C : context, rt : reftype, rt' : reftype}: `%|-%:%`(C, `REF.CAST`_instr(rt), `%->_%%`_instrtype(`%`_resulttype([(rt' : reftype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Reftype_ok: `%|-%:OK`(C, rt) -- Reftype_ok: `%|-%:OK`(C, rt') -- Reftype_sub: `%|-%<:%`(C, rt, rt') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:240.1-241.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:240.1-241.42 rule `i31.get`{C : context, sx : sx}: `%|-%:%`(C, `I31.GET`_instr(sx), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), I31_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:246.1-248.45 + ;; ../../../../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))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:250.1-253.48 + ;; ../../../../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))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- (Defaultable: `|-%DEFAULTABLE`($unpack(zt),))*{zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:258.1-262.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:258.1-262.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)],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27483,7 +27647,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(mut?{mut <- `mut?`}, zt)) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:264.1-267.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:264.1-267.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([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27491,26 +27655,26 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (i!`%`_fieldidx.0 < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i!`%`_fieldidx.0] = `%%`_fieldtype(?(MUT_mut), zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:272.1-274.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:272.1-274.43 rule `array.new`{C : context, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([$unpack(zt) I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:276.1-279.45 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:276.1-279.45 rule `array.new_default`{C : context, x : idx, `mut?` : mut?, zt : storagetype}: `%|-%:%`(C, `ARRAY.NEW_DEFAULT`_instr(x), `%->_%%`_instrtype(`%`_resulttype([I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- Defaultable: `|-%DEFAULTABLE`($unpack(zt),) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:281.1-283.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:281.1-283.43 rule `array.new_fixed`{C : context, x : idx, n : n, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)), `%->_%%`_instrtype(`%`_resulttype($unpack(zt)^n{},), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:285.1-288.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:285.1-288.40 rule `array.new_elem`{C : context, x : idx, y : idx, `mut?` : mut?, rt : reftype}: `%|-%:%`(C, `ARRAY.NEW_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27518,7 +27682,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- Reftype_sub: `%|-%<:%`(C, C.ELEMS_context[y!`%`_idx.0], rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:290.1-294.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:290.1-294.24 rule `array.new_data`{C : context, x : idx, y : idx, `mut?` : mut?, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.NEW_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([REF_valtype(?(), _IDX_heaptype(x))],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27527,30 +27691,30 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:296.1-299.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:296.1-299.41 rule `array.get`{C : context, `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%|-%:%`(C, `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype],), [], `%`_resulttype([$unpack(zt)],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((sx?{sx <- `sx?`} =/= ?()) <=> $is_packtype(zt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:301.1-303.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:301.1-303.42 rule `array.set`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:305.1-306.43 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:305.1-306.43 rule `array.len`{C : context}: `%|-%:%`(C, `ARRAY.LEN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), ARRAY_heaptype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:308.1-310.42 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:308.1-310.42 rule `array.fill`{C : context, x : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype $unpack(zt) I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) -- Expand: `%~~%`(C.TYPES_context[x!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(?(MUT_mut), zt))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:312.1-316.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:312.1-316.40 rule `array.copy`{C : context, x_1 : idx, x_2 : idx, zt_1 : storagetype, `mut?` : mut?, zt_2 : storagetype}: `%|-%:%`(C, `ARRAY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x_1)) I32_valtype REF_valtype(?(NULL_null), _IDX_heaptype(x_2)) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.TYPES_context|) @@ -27559,7 +27723,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- Expand: `%~~%`(C.TYPES_context[x_2!`%`_idx.0], ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- Storagetype_sub: `%|-%<:%`(C, zt_2, zt_1) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:318.1-321.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:318.1-321.44 rule `array.init_elem`{C : context, x : idx, y : idx, zt : storagetype}: `%|-%:%`(C, `ARRAY.INIT_ELEM`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27567,7 +27731,7 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.ELEMS_context|) -- Storagetype_sub: `%|-%<:%`(C, (C.ELEMS_context[y!`%`_idx.0] : reftype <: storagetype), zt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:323.1-327.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:323.1-327.24 rule `array.init_data`{C : context, x : idx, y : idx, zt : storagetype, numtype : numtype, vectype : vectype}: `%|-%:%`(C, `ARRAY.INIT_DATA`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([REF_valtype(?(NULL_null), _IDX_heaptype(x)) I32_valtype I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -27576,77 +27740,77 @@ relation Instr_ok: `%|-%:%`(context, instr, instrtype) -- if (y!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[y!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:332.1-334.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:332.1-334.26 rule `extern.convert_any`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `EXTERN.CONVERT_ANY`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, ANY_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, EXTERN_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:336.1-338.26 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:336.1-338.26 rule `any.convert_extern`{C : context, `null_1?` : null?, `null_2?` : null?}: `%|-%:%`(C, `ANY.CONVERT_EXTERN`_instr, `%->_%%`_instrtype(`%`_resulttype([REF_valtype(null_1?{null_1 <- `null_1?`}, EXTERN_heaptype)],), [], `%`_resulttype([REF_valtype(null_2?{null_2 <- `null_2?`}, ANY_heaptype)],))) -- if (null_1?{null_1 <- `null_1?`} = null_2?{null_2 <- `null_2?`}) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:343.1-345.28 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:343.1-345.28 rule `local.get`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `LOCAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(SET_init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:347.1-349.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:347.1-349.29 rule `local.set`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:351.1-353.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:351.1-353.29 rule `local.tee`{C : context, x : idx, t : valtype, init : init}: `%|-%:%`(C, `LOCAL.TEE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [x], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.LOCALS_context|) -- if (C.LOCALS_context[x!`%`_idx.0] = `%%`_localtype(init, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:358.1-360.30 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:358.1-360.30 rule `global.get`{C : context, x : idx, t : valtype, `mut?` : mut?}: `%|-%:%`(C, `GLOBAL.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(mut?{mut <- `mut?`}, t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:362.1-364.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:362.1-364.29 rule `global.set`{C : context, x : idx, t : valtype}: `%|-%:%`(C, `GLOBAL.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([t],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(MUT_mut), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:369.1-371.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:369.1-371.32 rule `table.get`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.GET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:373.1-375.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:373.1-375.32 rule `table.set`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.SET`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:377.1-379.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:377.1-379.32 rule `table.size`{C : context, x : idx, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, `TABLE.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:381.1-383.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:381.1-383.32 rule `table.grow`{C : context, x : idx, rt : reftype, at : addrtype, lim : limits}: `%|-%:%`(C, `TABLE.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:385.1-387.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:385.1-387.32 rule `table.fill`{C : context, x : idx, at : addrtype, rt : reftype, lim : limits}: `%|-%:%`(C, `TABLE.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (rt : reftype <: valtype) (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:389.1-393.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:389.1-393.36 rule `table.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, rt_1 : reftype, lim_2 : limits, rt_2 : reftype}: `%|-%:%`(C, `TABLE.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.TABLES_context|) @@ -27655,7 +27819,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-3.0/2.3-validation.instructions.spectec:395.1-399.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:395.1-399.36 rule `table.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits, rt_1 : reftype, rt_2 : reftype}: `%|-%:%`(C, `TABLE.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.TABLES_context|) @@ -27664,31 +27828,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-3.0/2.3-validation.instructions.spectec:401.1-403.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:401.1-403.24 rule `elem.drop`{C : context, x : idx, rt : reftype}: `%|-%:%`(C, `ELEM.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.ELEMS_context|) -- if (C.ELEMS_context[x!`%`_idx.0] = rt) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:416.1-418.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:416.1-418.32 rule `memory.size`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.SIZE`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:420.1-422.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:420.1-422.32 rule `memory.grow`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.GROW`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(at : addrtype <: valtype)],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:424.1-426.32 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:424.1-426.32 rule `memory.fill`{C : context, x : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.FILL`_instr(x), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype (at : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:428.1-431.38 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:428.1-431.38 rule `memory.copy`{C : context, x_1 : idx, x_2 : idx, at_1 : addrtype, at_2 : addrtype, lim_1 : limits, lim_2 : limits}: `%|-%:%`(C, `MEMORY.COPY`_instr(x_1, x_2), `%->_%%`_instrtype(`%`_resulttype([(at_1 : addrtype <: valtype) (at_2 : addrtype <: valtype) ($minat(at_1, at_2) : addrtype <: valtype)],), [], `%`_resulttype([],))) -- if (x_1!`%`_idx.0 < |C.MEMS_context|) @@ -27696,7 +27860,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-3.0/2.3-validation.instructions.spectec:433.1-436.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:433.1-436.24 rule `memory.init`{C : context, x : idx, y : idx, at : addrtype, lim : limits}: `%|-%:%`(C, `MEMORY.INIT`_instr(x, y), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) I32_valtype I32_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) @@ -27704,69 +27868,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-3.0/2.3-validation.instructions.spectec:438.1-440.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:438.1-440.24 rule `data.drop`{C : context, x : idx}: `%|-%:%`(C, `DATA.DROP`_instr(x), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.DATAS_context|) -- if (C.DATAS_context[x!`%`_idx.0] = OK_datatype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:451.1-454.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:451.1-454.44 rule `load-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, LOAD_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) -- if (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-3.0/2.3-validation.instructions.spectec:456.1-459.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:456.1-459.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-3.0/2.3-validation.instructions.spectec:470.1-473.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:470.1-473.44 rule `store-val`{C : context, nt : numtype, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, STORE_instr(nt, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([],))) -- if (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-3.0/2.3-validation.instructions.spectec:475.1-478.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:475.1-478.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-3.0/2.3-validation.instructions.spectec:480.1-483.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:480.1-483.47 rule `vload-val`{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (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-3.0/2.3-validation.instructions.spectec:485.1-488.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:485.1-488.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-3.0/2.3-validation.instructions.spectec:490.1-493.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:490.1-493.36 rule `vload-splat`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:495.1-498.36 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:495.1-498.36 rule `vload-zero`{C : context, N : N, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Memarg_ok: `|-%:%->%`(memarg, at, N) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:500.1-504.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:500.1-504.21 rule vload_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) @@ -27774,14 +27938,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-3.0/2.3-validation.instructions.spectec:506.1-509.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:506.1-509.47 rule vstore{C : context, x : idx, memarg : memarg, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_instr(V128_vectype, x, memarg), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (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-3.0/2.3-validation.instructions.spectec:511.1-515.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:511.1-515.21 rule vstore_lane{C : context, N : N, x : idx, memarg : memarg, i : laneidx, at : addrtype, lim : limits}: `%|-%:%`(C, VSTORE_LANE_instr(V128_vectype, `%`_sz(N,), x, memarg, i), `%->_%%`_instrtype(`%`_resulttype([(at : addrtype <: valtype) V128_valtype],), [], `%`_resulttype([],))) -- if (x!`%`_idx.0 < |C.MEMS_context|) @@ -27789,133 +27953,141 @@ 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-3.0/2.3-validation.instructions.spectec:520.1-521.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:520.1-521.33 rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%:%`(C, CONST_instr(nt, c_nt), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:523.1-524.34 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:523.1-524.34 rule unop{C : context, nt : numtype, unop_nt : unop_(nt)}: `%|-%:%`(C, UNOP_instr(nt, unop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:526.1-527.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:526.1-527.39 rule binop{C : context, nt : numtype, binop_nt : binop_(nt)}: `%|-%:%`(C, BINOP_instr(nt, binop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:529.1-530.39 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:529.1-530.39 rule testop{C : context, nt : numtype, testop_nt : testop_(nt)}: `%|-%:%`(C, TESTOP_instr(nt, testop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:532.1-533.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:532.1-533.40 rule relop{C : context, nt : numtype, relop_nt : relop_(nt)}: `%|-%:%`(C, RELOP_instr(nt, relop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:535.1-536.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:535.1-536.44 rule cvtop{C : context, nt_1 : numtype, nt_2 : numtype, cvtop : cvtop__(nt_2, nt_1)}: `%|-%:%`(C, CVTOP_instr(nt_1, nt_2, cvtop), `%->_%%`_instrtype(`%`_resulttype([(nt_2 : numtype <: valtype)],), [], `%`_resulttype([(nt_1 : numtype <: valtype)],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:541.1-542.35 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:538.1-539.50 + rule wideop{C : context, nt : numtype, wideop_nt : wideop_(nt)}: + `%|-%:%`(C, WIDEOP_instr(nt, wideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:541.1-542.50 + rule extwideop{C : context, nt : numtype, extwideop_nt : extwideop_(nt)}: + `%|-%:%`(C, EXTWIDEOP_instr(nt, extwideop_nt), `%->_%%`_instrtype(`%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],), [], `%`_resulttype([(nt : numtype <: valtype) (nt : numtype <: valtype)],))) + + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:547.1-548.35 rule vconst{C : context, c : vec_(V128_Vnn)}: `%|-%:%`(C, VCONST_instr(V128_vectype, c), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:544.1-545.41 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:550.1-551.41 rule vvunop{C : context, vvunop : vvunop}: `%|-%:%`(C, VVUNOP_instr(V128_vectype, vvunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:547.1-548.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:553.1-554.48 rule vvbinop{C : context, vvbinop : vvbinop}: `%|-%:%`(C, VVBINOP_instr(V128_vectype, vvbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:550.1-551.55 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:556.1-557.55 rule vvternop{C : context, vvternop : vvternop}: `%|-%:%`(C, VVTERNOP_instr(V128_vectype, vvternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:553.1-554.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:559.1-560.44 rule vvtestop{C : context, vvtestop : vvtestop}: `%|-%:%`(C, VVTESTOP_instr(V128_vectype, vvtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:556.1-557.37 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:562.1-563.37 rule vunop{C : context, sh : shape, vunop : vunop_(sh)}: `%|-%:%`(C, VUNOP_instr(sh, vunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:559.1-560.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:565.1-566.44 rule vbinop{C : context, sh : shape, vbinop : vbinop_(sh)}: `%|-%:%`(C, VBINOP_instr(sh, vbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:562.1-563.51 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:568.1-569.51 rule vternop{C : context, sh : shape, vternop : vternop_(sh)}: `%|-%:%`(C, VTERNOP_instr(sh, vternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:565.1-566.40 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:571.1-572.40 rule vtestop{C : context, sh : shape, vtestop : vtestop_(sh)}: `%|-%:%`(C, VTESTOP_instr(sh, vtestop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:568.1-569.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:574.1-575.44 rule vrelop{C : context, sh : shape, vrelop : vrelop_(sh)}: `%|-%:%`(C, VRELOP_instr(sh, vrelop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:571.1-572.47 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:577.1-578.47 rule vshiftop{C : context, sh : ishape, vshiftop : vshiftop_(sh)}: `%|-%:%`(C, VSHIFTOP_instr(sh, vshiftop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype I32_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:574.1-575.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:580.1-581.33 rule vbitmask{C : context, sh : ishape}: `%|-%:%`(C, VBITMASK_instr(sh), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:577.1-578.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:583.1-584.50 rule vswizzlop{C : context, sh : bshape, vswizzlop : vswizzlop_(sh)}: `%|-%:%`(C, VSWIZZLOP_instr(sh, vswizzlop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:580.1-582.29 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:586.1-588.29 rule vshuffle{C : context, sh : bshape, `i*` : laneidx*}: `%|-%:%`(C, VSHUFFLE_instr(sh, i*{i <- `i*`}), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) -- (if (i!`%`_laneidx.0 < (2 * $dim(sh!`%`_bshape.0)!`%`_dim.0)))*{i <- `i*`} - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:584.1-585.44 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:590.1-591.44 rule vsplat{C : context, sh : shape}: `%|-%:%`(C, VSPLAT_instr(sh), `%->_%%`_instrtype(`%`_resulttype([($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:587.1-589.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:593.1-595.21 rule vextract_lane{C : context, sh : shape, `sx?` : sx?, i : laneidx}: `%|-%:%`(C, VEXTRACT_LANE_instr(sh, sx?{sx <- `sx?`}, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([($unpackshape(sh) : numtype <: valtype)],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:591.1-593.21 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:597.1-599.21 rule vreplace_lane{C : context, sh : shape, i : laneidx}: `%|-%:%`(C, VREPLACE_LANE_instr(sh, i), `%->_%%`_instrtype(`%`_resulttype([V128_valtype ($unpackshape(sh) : numtype <: valtype)],), [], `%`_resulttype([V128_valtype],))) -- if (i!`%`_laneidx.0 < $dim(sh)!`%`_dim.0) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:595.1-596.50 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:601.1-602.50 rule vextunop{C : context, sh_1 : ishape, sh_2 : ishape, vextunop : vextunop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTUNOP_instr(sh_1, sh_2, vextunop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:598.1-599.57 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:604.1-605.57 rule vextbinop{C : context, sh_1 : ishape, sh_2 : ishape, vextbinop : vextbinop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTBINOP_instr(sh_1, sh_2, vextbinop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:601.1-602.64 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:607.1-608.64 rule vextternop{C : context, sh_1 : ishape, sh_2 : ishape, vextternop : vextternop__(sh_2, sh_1)}: `%|-%:%`(C, VEXTTERNOP_instr(sh_1, sh_2, vextternop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:604.1-605.48 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:610.1-611.48 rule vnarrow{C : context, sh_1 : ishape, sh_2 : ishape, sx : sx}: `%|-%:%`(C, VNARROW_instr(sh_1, sh_2, sx), `%->_%%`_instrtype(`%`_resulttype([V128_valtype V128_valtype],), [], `%`_resulttype([V128_valtype],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:607.1-608.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:613.1-614.46 rule vcvtop{C : context, sh_1 : shape, sh_2 : shape, vcvtop : vcvtop__(sh_2, sh_1)}: `%|-%:%`(C, VCVTOP_instr(sh_1, sh_2, vcvtop), `%->_%%`_instrtype(`%`_resulttype([V128_valtype],), [], `%`_resulttype([V128_valtype],))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:6.1-6.96 +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:6.1-6.96 relation Instrs_ok: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:613.1-614.24 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:619.1-620.24 rule empty{C : context}: `%|-%:%`(C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:616.1-618.46 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:622.1-624.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-3.0/2.3-validation.instructions.spectec:621.1-625.82 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:627.1-631.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*`},))) @@ -27925,169 +28097,169 @@ 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-3.0/2.3-validation.instructions.spectec:627.1-631.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:633.1-637.33 rule sub{C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%|-%:%`(C, instr*{instr <- `instr*`}, it') -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec:634.1-637.33 + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec:640.1-643.33 rule frame{C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t*{t <- `t*`} ++ t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`} ++ t_2*{t_2 <- `t_2*`},))) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) } -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok: `%|-%:%`(context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*, `t*` : valtype*}: `%|-%:%`(C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok: `%|-%:%`(C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Nondefaultable: `|-%NONDEFAULTABLE`(valtype,) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{t : valtype}: `|-%NONDEFAULTABLE`(t,) -- if ($default_(t) = ?()) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Instr_const: `%|-%CONST`(context, instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule const{C : context, nt : numtype, c_nt : num_(nt)}: `%|-%CONST`(C, CONST_instr(nt, c_nt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule vconst{C : context, vt : vectype, c_vt : vec_(vt)}: `%|-%CONST`(C, VCONST_instr(vt, c_vt)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.null`{C : context, ht : heaptype}: `%|-%CONST`(C, `REF.NULL`_instr(ht)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.i31`{C : context}: `%|-%CONST`(C, `REF.I31`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `ref.func`{C : context, x : idx}: `%|-%CONST`(C, `REF.FUNC`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `struct.new_default`{C : context, x : idx}: `%|-%CONST`(C, `STRUCT.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_default`{C : context, x : idx}: `%|-%CONST`(C, `ARRAY.NEW_DEFAULT`_instr(x)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `array.new_fixed`{C : context, x : idx, n : n}: `%|-%CONST`(C, `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `any.convert_extern`{C : context}: `%|-%CONST`(C, `ANY.CONVERT_EXTERN`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `extern.convert_any`{C : context}: `%|-%CONST`(C, `EXTERN.CONVERT_ANY`_instr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule `global.get`{C : context, x : idx, t : valtype}: `%|-%CONST`(C, `GLOBAL.GET`_instr(x)) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(), t)) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule binop{C : context, Inn : Inn, binop : binop_((Inn : Inn <: numtype))}: `%|-%CONST`(C, BINOP_instr((Inn : Inn <: numtype), binop)) -- if (Inn <- [I32_Inn I64_Inn]) -- if (binop <- [ADD_binop_ SUB_binop_ MUL_binop_]) -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_const: `%|-%CONST`(context, expr) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, `instr*` : instr*}: `%|-%CONST`(C, instr*{instr <- `instr*`}) -- (Instr_const: `%|-%CONST`(C, instr))*{instr <- `instr*`} -;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec +;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec relation Expr_ok_const: `%|-%:%CONST`(context, expr, valtype) - ;; ../../../../specification/wasm-3.0/2.3-validation.instructions.spectec + ;; ../../../../specification/wasm-latest/2.3-validation.instructions.spectec rule _{C : context, expr : expr, t : valtype}: `%|-%:%CONST`(C, expr, t) -- Expr_ok: `%|-%:%`(C, expr, `%`_resulttype([t],)) -- Expr_const: `%|-%CONST`(C, expr) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Type_ok: `%|-%:%`(context, type, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, rectype : rectype, `dt*` : deftype*, x : idx}: `%|-%:%`(C, TYPE_type(rectype), dt*{dt <- `dt*`}) -- if (x!`%`_idx.0 = |C.TYPES_context|) -- if (dt*{dt <- `dt*`} = $rolldt(x, rectype)) -- Rectype_ok: `%|-%:%`(C +++ {TYPES dt*{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rectype, OK_oktypeidx(x)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Tag_ok: `%|-%:%`(context, tag, tagtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tagtype : tagtype}: `%|-%:%`(C, TAG_tag(tagtype), $clos_tagtype(C, tagtype)) -- Tagtype_ok: `%|-%:OK`(C, tagtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Global_ok: `%|-%:%`(context, global, globaltype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, globaltype : globaltype, expr : expr, t : valtype}: `%|-%:%`(C, GLOBAL_global(globaltype, expr), globaltype) -- Globaltype_ok: `%|-%:OK`(C, globaltype) -- if (globaltype = `%%`_globaltype(MUT_mut?{}, t)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, t) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Mem_ok: `%|-%:%`(context, mem, memtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, memtype : memtype}: `%|-%:%`(C, MEMORY_mem(memtype), memtype) -- Memtype_ok: `%|-%:OK`(C, memtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Table_ok: `%|-%:%`(context, table, tabletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, tabletype : tabletype, expr : expr, at : addrtype, lim : limits, rt : reftype}: `%|-%:%`(C, TABLE_table(tabletype, expr), tabletype) -- Tabletype_ok: `%|-%:OK`(C, tabletype) -- if (tabletype = `%%%`_tabletype(at, lim, rt)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (rt : reftype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Local_ok: `%|-%:%`(context, local, localtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule set{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(SET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Defaultable: `|-%DEFAULTABLE`(t,) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule unset{C : context, t : valtype}: `%|-%:%`(C, LOCAL_local(t), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`(C, t) -- Nondefaultable: `|-%NONDEFAULTABLE`(t,) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Func_ok: `%|-%:%`(context, func, deftype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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]) -- if (x!`%`_idx.0 < |C.TYPES_context|) @@ -28096,37 +28268,37 @@ relation Func_ok: `%|-%:%`(context, func, deftype) -- (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*`},)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Datamode_ok: `%|-%:%`(context, datamode, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context}: `%|-%:%`(C, PASSIVE_datamode, OK_datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, at : addrtype, lim : limits}: `%|-%:%`(C, ACTIVE_datamode(x, expr), OK_datatype) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = `%%PAGE`_memtype(at, lim)) -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Data_ok: `%|-%:%`(context, data, datatype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, `b*` : byte*, datamode : datamode}: `%|-%:%`(C, DATA_data(b*{b <- `b*`}, datamode), OK_datatype) -- Datamode_ok: `%|-%:%`(C, datamode, OK_datatype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule passive{C : context, rt : reftype}: `%|-%:%`(C, PASSIVE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule declare{C : context, rt : reftype}: `%|-%:%`(C, DECLARE_elemmode, rt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule active{C : context, x : idx, expr : expr, rt : reftype, at : addrtype, lim : limits, rt' : reftype}: `%|-%:%`(C, ACTIVE_elemmode(x, expr), rt) -- if (x!`%`_idx.0 < |C.TABLES_context|) @@ -28134,113 +28306,113 @@ relation Elemmode_ok: `%|-%:%`(context, elemmode, elemtype) -- Reftype_sub: `%|-%<:%`(C, rt, rt') -- Expr_ok_const: `%|-%:%CONST`(C, expr, (at : addrtype <: valtype)) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Elem_ok: `%|-%:%`(context, elem, elemtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, elemtype : elemtype, `expr*` : expr*, elemmode : elemmode}: `%|-%:%`(C, ELEM_elem(elemtype, expr*{expr <- `expr*`}, elemmode), elemtype) -- Reftype_ok: `%|-%:OK`(C, elemtype) -- (Expr_ok_const: `%|-%:%CONST`(C, expr, (elemtype : reftype <: valtype)))*{expr <- `expr*`} -- Elemmode_ok: `%|-%:%`(C, elemmode, elemtype) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Start_ok: `%|-%:OK`(context, start) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, x : idx}: `%|-%:OK`(C, START_start(x)) -- if (x!`%`_idx.0 < |C.FUNCS_context|) -- Expand: `%~~%`(C.FUNCS_context[x!`%`_idx.0], `FUNC%->%`_comptype(`%`_resulttype([],), `%`_resulttype([],))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Import_ok: `%|-%:%`(context, import, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name_1 : name, name_2 : name, xt : externtype}: `%|-%:%`(C, IMPORT_import(name_1, name_2, xt), $clos_externtype(C, xt)) -- Externtype_ok: `%|-%:OK`(C, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Externidx_ok: `%|-%:%`(context, externidx, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule tag{C : context, x : idx, jt : tagtype}: `%|-%:%`(C, TAG_externidx(x), TAG_externtype(jt)) -- if (x!`%`_idx.0 < |C.TAGS_context|) -- if (C.TAGS_context[x!`%`_idx.0] = jt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule global{C : context, x : idx, gt : globaltype}: `%|-%:%`(C, GLOBAL_externidx(x), GLOBAL_externtype(gt)) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = gt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule mem{C : context, x : idx, mt : memtype}: `%|-%:%`(C, MEM_externidx(x), MEM_externtype(mt)) -- if (x!`%`_idx.0 < |C.MEMS_context|) -- if (C.MEMS_context[x!`%`_idx.0] = mt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule table{C : context, x : idx, tt : tabletype}: `%|-%:%`(C, TABLE_externidx(x), TABLE_externtype(tt)) -- if (x!`%`_idx.0 < |C.TABLES_context|) -- if (C.TABLES_context[x!`%`_idx.0] = tt) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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 (x!`%`_idx.0 < |C.FUNCS_context|) -- if (C.FUNCS_context[x!`%`_idx.0] = dt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Export_ok: `%|-%:%%`(context, export, name, externtype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rule _{C : context, name : name, externidx : externidx, xt : externtype}: `%|-%:%%`(C, EXPORT_export(name, externidx), name, xt) -- Externidx_ok: `%|-%:%`(C, externidx, xt) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:138.1-138.100 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:138.1-138.100 relation Globals_ok: `%|-%:%`(context, global*, globaltype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:183.1-184.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:183.1-184.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:186.1-189.54 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:186.1-189.54 rule cons{C : context, global_1 : global, `global*` : global*, gt_1 : globaltype, `gt*` : globaltype*}: `%|-%:%`(C, [global_1] ++ global*{global <- `global*`}, [gt_1] ++ gt*{gt <- `gt*`}) -- Global_ok: `%|-%:%`(C, global_1, gt_1) -- Globals_ok: `%|-%:%`(C +++ {TYPES [], TAGS [], GLOBALS [gt_1], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, global*{global <- `global*`}, gt*{gt <- `gt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec rec { -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:137.1-137.98 +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:137.1-137.98 relation Types_ok: `%|-%:%`(context, type*, deftype*) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:175.1-176.17 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:175.1-176.17 rule empty{C : context}: `%|-%:%`(C, [], []) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec:178.1-181.49 + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec:178.1-181.49 rule cons{C : context, type_1 : type, `type*` : type*, `dt_1*` : deftype*, `dt*` : deftype*}: `%|-%:%`(C, [type_1] ++ type*{type <- `type*`}, dt_1*{dt_1 <- `dt_1*`} ++ dt*{dt <- `dt*`}) -- Type_ok: `%|-%:%`(C, type_1, dt_1*{dt_1 <- `dt_1*`}) -- Types_ok: `%|-%:%`(C +++ {TYPES dt_1*{dt_1 <- `dt_1*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, type*{type <- `type*`}, dt*{dt <- `dt*`}) } -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec syntax nonfuncs = | `%%%%%`(`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs(nonfuncs : nonfuncs) : funcidx* - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec def $funcidx_nonfuncs{`global*` : global*, `mem*` : mem*, `table*` : table*, `elem*` : elem*, `export*` : export*}(`%%%%%`_nonfuncs(global*{global <- `global*`}, mem*{mem <- `mem*`}, table*{table <- `table*`}, elem*{elem <- `elem*`}, export*{export <- `export*`})) = $funcidx_module(MODULE_module(`%`_list([],), `%`_list([],), `%`_list([],), `%`_list(global*{global <- `global*`},), `%`_list(mem*{mem <- `mem*`},), `%`_list(table*{table <- `table*`},), `%`_list([],), `%`_list([],), `%`_list(elem*{elem <- `elem*`},), ?(), `%`_list(export*{export <- `export*`},))) -;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec +;; ../../../../specification/wasm-latest/2.4-validation.modules.spectec relation Module_ok: `|-%:%`(module, moduletype) - ;; ../../../../specification/wasm-3.0/2.4-validation.modules.spectec + ;; ../../../../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*}: `|-%:%`(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'*`}) @@ -28273,1028 +28445,1055 @@ relation Module_ok: `|-%:%`(module, moduletype) -- if (tt_I*{tt_I <- `tt_I*`} = $tablesxt(xt_I*{xt_I <- `xt_I*`})) -- if (dt_I*{dt_I <- `dt_I*`} = $funcsxt(xt_I*{xt_I <- `xt_I*`})) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed2 = | `%`(i : nat,) -- if ((i = 0) \/ (i = 1)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec syntax relaxed4 = | `%`(i : nat,) -- if ((((i = 0) \/ (i = 1)) \/ (i = 2)) \/ (i = 3)) -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2(relaxed2 : relaxed2, syntax X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][i!`%`_relaxed2.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed2{i : relaxed2, syntax X, X_1 : X, X_2 : X}(i, syntax X, X_1, X_2) = [X_1 X_2][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4(relaxed4 : relaxed4, syntax X, X : X, X : X, X : X, X : X) : X - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][i!`%`_relaxed4.0] -- if $ND - ;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec + ;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $relaxed4{i : relaxed4, syntax X, X_1 : X, X_2 : X, X_3 : X, X_4 : X}(i, syntax X, X_1, X_2, X_3, X_4) = [X_1 X_2 X_3 X_4][0] -- otherwise -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmadd : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmin : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_fmax : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_idot : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_iq15mulr : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_u : relaxed4 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_trunc_s : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_swizzle : relaxed2 -;; ../../../../specification/wasm-3.0/3.0-numerics.relaxed.spectec +;; ../../../../specification/wasm-latest/3.0-numerics.relaxed.spectec def $R_laneselect : relaxed2 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $s33_to_u32(s33 : s33) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibits_(N : N, iN : iN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbits_(N : N, fN : fN(N)) : bit* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibytes_(N : N, iN : iN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fbytes_(N : N, fN : fN(N)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $nbytes_(numtype : numtype, num_ : num_(numtype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $vbytes_(vectype : vectype, vec_ : vec_(vectype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zbytes_(storagetype : storagetype, lit_ : lit_(storagetype)) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cbytes_(Cnn : Cnn, lit_ : lit_((Cnn : Cnn <: storagetype))) : byte* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibits_(N : N, bit*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbits_(N : N, bit*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_ibytes_(N : N, byte*) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_fbytes_(N : N, byte*) : fN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_nbytes_(numtype : numtype, byte*) : num_(numtype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_vbytes_(vectype : vectype, byte*) : vec_(vectype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_zbytes_(storagetype : storagetype, byte*) : lit_(storagetype) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_cbytes_(Cnn : Cnn, byte*) : lit_((Cnn : Cnn <: storagetype)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_(N : N, nat : nat) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = (i : nat <:> int) -- if (i < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $signed_{N : N, i : nat}(N, i) = ((i : nat <:> int) - ((2 ^ N) : nat <:> int)) -- if (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) <= i) /\ (i < (2 ^ N))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = (i : int <:> nat) -- if (((0 : nat <:> int) <= i) /\ (i < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inv_signed_{N : N, i : int}(N, i) = ((i + ((2 ^ N) : nat <:> int)) : int <:> nat) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= i) /\ (i < (0 : nat <:> int))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx(storagetype : storagetype) : sx? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{consttype : consttype}((consttype : consttype <: storagetype)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sx{packtype : packtype}((packtype : packtype <: storagetype)) = ?(S_sx) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero(lanetype : lanetype) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Jnn : Jnn}((Jnn : Jnn <: lanetype)) = `%`_lane_(0,) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $zero{Fnn : Fnn}((Fnn : Fnn <: lanetype)) = $fzero($size((Fnn : Fnn <: numtype))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(bool : bool) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(false) = 0 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $bool(true) = 1 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $truncz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ceilz(rat : rat) : int -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_(N : N, int : int) : nat - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = 0 -- if (i < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = ((((2 ^ N) : nat <:> int) - (1 : nat <:> int)) : int <:> nat) -- if (i > (((2 ^ N) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_u_{N : N, i : int}(N, i) = (i : int <:> nat) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_(N : N, int : int) : int - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) -- if (i < - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int)) -- if (i > (((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) - (1 : nat <:> int))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $sat_s_{N : N, i : int}(N, i) = i -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ineg_{N : N, i_1 : iN(N)}(N, i_1) = `%`_iN((((((2 ^ N) : nat <:> int) - (i_1!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_(N : N, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iabs_{N : N, i_1 : iN(N)}(N, i_1) = $ineg_(N, i_1) -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iclz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ictz_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ipopcnt_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_(N : N, K : K, sx : sx, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, U_sx, i) = `%`_iN((i!`%`_iN.0 \ (2 ^ K)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iextend_{N : N, K : K, i : iN(N)}(N, K, S_sx, i) = `%`_iN($inv_signed_(N, $signed_(K, (i!`%`_iN.0 \ (2 ^ K)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 + i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((((((2 ^ N) + i_1!`%`_iN.0) : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int)) \ ((2 ^ N) : nat <:> int)) : int <:> nat),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_(N : N, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imul_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_iN(((i_1!`%`_iN.0 * i_2!`%`_iN.0) \ (2 ^ N)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN(($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?() -- if ((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)) = ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $idiv_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, $truncz((($signed_(N, i_1!`%`_iN.0) : int <:> rat) / ($signed_(N, i_2!`%`_iN.0) : int <:> rat)))),)) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)? - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, U_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = ?(`%`_iN((((i_1!`%`_iN.0 : nat <:> int) - ((i_2!`%`_iN.0 * ($truncz(((i_1!`%`_iN.0 : nat <:> rat) / (i_2!`%`_iN.0 : nat <:> rat))) : int <:> nat)) : nat <:> int)) : int <:> nat),)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N)}(N, S_sx, i_1, `%`_iN(0,)) = ?() - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irem_{N : N, i_1 : iN(N), i_2 : iN(N), j_1 : int, j_2 : int}(N, S_sx, i_1, i_2) = ?(`%`_iN($inv_signed_(N, (j_1 - (j_2 * $truncz(((j_1 : int <:> rat) / (j_2 : int <:> rat)))))),)) -- if ((j_1 = $signed_(N, i_1!`%`_iN.0)) /\ (j_2 = $signed_(N, i_2!`%`_iN.0))) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 <= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 > i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imin_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_1 -- if (i_1!`%`_iN.0 >= i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = i_2 -- if (i_1!`%`_iN.0 < i_2!`%`_iN.0) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_1 -- if ($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $imax_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = i_2 -- otherwise -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 + i_2!`%`_iN.0) : nat <:> int)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iadd_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) + $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_iN($sat_u_(N, ((i_1!`%`_iN.0 : nat <:> int) - (i_2!`%`_iN.0 : nat <:> int))),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $isub_sat_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_iN($inv_signed_(N, $sat_s_(N, ($signed_(N, i_1!`%`_iN.0) - $signed_(N, i_2!`%`_iN.0)))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iq15mulr_sat_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_q15mulr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iavgr_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inot_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irev_(N : N, iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iand_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $iandnot_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ior_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ixor_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishl_(N : N, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ishr_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotl_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irotr_(N : N, iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ibitselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $irelaxed_laneselect_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieqz_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 = 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_(N : N, iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $inez_{N : N, i_1 : iN(N)}(N, i_1) = `%`_u32($bool((i_1!`%`_iN.0 =/= 0)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ieq_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 = i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_(N : N, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ine_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, i_1, i_2) = `%`_u32($bool((i_1 =/= i_2)),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 < i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ilt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) < $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 > i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $igt_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) > $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 <= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ile_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) <= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, U_sx, i_1, i_2) = `%`_u32($bool((i_1!`%`_iN.0 >= i_2!`%`_iN.0)),) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ige_{N : N, i_1 : iN(N), i_2 : iN(N)}(N, S_sx, i_1, i_2) = `%`_u32($bool(($signed_(N, i_1!`%`_iN.0) >= $signed_(N, i_2!`%`_iN.0))),) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fabs_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fneg_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsqrt_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fceil_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ffloor_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $ftrunc_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fnearest_(N : N, fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fadd_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fsub_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmul_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fdiv_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmin_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fpmax_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_min_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_max_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fcopysign_(N : N, fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $feq_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fne_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $flt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fgt_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fle_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $fge_(N : N, fN : fN(N), fN : fN(N)) : u32 -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_madd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $frelaxed_nmadd_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $wrap__(N : N, N' : N, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $extend__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $trunc_sat__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relaxed_trunc__(N : N, N' : N, sx : sx, fN : fN(N)) : iN(N')? -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $demote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $promote__(N : N, N' : N, fN : fN(N)) : fN(N')* -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $convert__(N : N, N' : N, sx : sx, iN : iN(N)) : fN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $narrow__(N : N, N' : N, sx : sx, iN : iN(N)) : iN(N') -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $reinterpret__(numtype_1 : numtype, numtype_2 : numtype, num_ : num_(numtype_1)) : num_(numtype_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_(lanetype : lanetype, num_ : num_($lunpack(lanetype))) : lane_(lanetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{numtype : numtype, c : num_($lunpack((numtype : numtype <: lanetype)))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lpacknum_{packtype : packtype, c : num_($lunpack((packtype : packtype <: lanetype)))}((packtype : packtype <: lanetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_(storagetype : storagetype, lit_ : lit_((!($cunpack(storagetype)) : consttype <: storagetype))) : lit_(storagetype) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{consttype : consttype, c : lit_((!($cunpack((consttype : consttype <: storagetype))) : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cpacknum_{packtype : packtype, c : lit_((!($cunpack((packtype : packtype <: storagetype))) : consttype <: storagetype))}((packtype : packtype <: storagetype), c) = $wrap__($size($lunpack((packtype : packtype <: lanetype))), $psize(packtype), c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_(lanetype : lanetype, lane_ : lane_(lanetype)) : num_($lunpack(lanetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{numtype : numtype, c : lane_((numtype : numtype <: lanetype))}((numtype : numtype <: lanetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $lunpacknum_{packtype : packtype, c : lane_((packtype : packtype <: lanetype))}((packtype : packtype <: lanetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_(storagetype : storagetype, lit_ : lit_(storagetype)) : lit_((!($cunpack(storagetype)) : consttype <: storagetype)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{consttype : consttype, c : lit_((consttype : consttype <: storagetype))}((consttype : consttype <: storagetype), c) = c - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cunpacknum_{packtype : packtype, c : lit_((packtype : packtype <: storagetype))}((packtype : packtype <: storagetype), c) = $extend__($psize(packtype), $size($lunpack((packtype : packtype <: lanetype))), U_sx, c) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_(numtype : numtype, unop_ : unop_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CLZ_unop_, i) = [$iclz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), CTZ_unop_, i) = [$ictz_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), POPCNT_unop_, i) = [$ipopcnt_($sizenn((Inn : Inn <: numtype)), i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Inn : Inn, N' : N, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EXTEND_unop_(`%`_sz(N',),), i) = [$iextend_($sizenn((Inn : Inn <: numtype)), N', S_sx, i)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ABS_unop_, f) = $fabs_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEG_unop_, f) = $fneg_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SQRT_unop_, f) = $fsqrt_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), CEIL_unop_, f) = $fceil_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), FLOOR_unop_, f) = $ffloor_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), TRUNC_unop_, f) = $ftrunc_($sizenn((Fnn : Fnn <: numtype)), f) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $unop_{Fnn : Fnn, f : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NEAREST_unop_, f) = $fnearest_($sizenn((Fnn : Fnn <: numtype)), f) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_(numtype : numtype, binop_ : binop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : num_(numtype)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ADD_binop_, i_1, i_2) = [$iadd_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SUB_binop_, i_1, i_2) = [$isub_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_binop_, i_1, i_2) = [$imul_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), DIV_binop_(sx), i_1, i_2) = lift($idiv_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), REM_binop_(sx), i_1, i_2) = lift($irem_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), AND_binop_, i_1, i_2) = [$iand_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), OR_binop_, i_1, i_2) = [$ior_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), XOR_binop_, i_1, i_2) = [$ixor_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHL_binop_, i_1, i_2) = [$ishl_($sizenn((Inn : Inn <: numtype)), i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), SHR_binop_(sx), i_1, i_2) = [$ishr_($sizenn((Inn : Inn <: numtype)), sx, i_1, `%`_u32(i_2!`%`_num_.0,))] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTL_binop_, i_1, i_2) = [$irotl_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), ROTR_binop_, i_1, i_2) = [$irotr_($sizenn((Inn : Inn <: numtype)), i_1, i_2)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), ADD_binop_, f_1, f_2) = $fadd_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), SUB_binop_, f_1, f_2) = $fsub_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MUL_binop_, f_1, f_2) = $fmul_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), DIV_binop_, f_1, f_2) = $fdiv_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MIN_binop_, f_1, f_2) = $fmin_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), MAX_binop_, f_1, f_2) = $fmax_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $binop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), COPYSIGN_binop_, f_1, f_2) = $fcopysign_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_(numtype : numtype, testop_ : testop_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $testop_{Inn : Inn, i : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQZ_testop_, i) = $ieqz_($sizenn((Inn : Inn <: numtype)), i) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_(numtype : numtype, relop_ : relop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : u32 - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), EQ_relop_, i_1, i_2) = $ieq_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), NE_relop_, i_1, i_2) = $ine_($sizenn((Inn : Inn <: numtype)), i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LT_relop_(sx), i_1, i_2) = $ilt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GT_relop_(sx), i_1, i_2) = $igt_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), LE_relop_(sx), i_1, i_2) = $ile_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), GE_relop_(sx), i_1, i_2) = $ige_($sizenn((Inn : Inn <: numtype)), sx, i_1, i_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), EQ_relop_, f_1, f_2) = $feq_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), NE_relop_, f_1, f_2) = $fne_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LT_relop_, f_1, f_2) = $flt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GT_relop_, f_1, f_2) = $fgt_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), LE_relop_, f_1, f_2) = $fle_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $relop_{Fnn : Fnn, f_1 : num_((Fnn : Fnn <: numtype)), f_2 : num_((Fnn : Fnn <: numtype))}((Fnn : Fnn <: numtype), GE_relop_, f_1, f_2) = $fge_($sizenn((Fnn : Fnn <: numtype)), f_1, f_2) -;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__(numtype_1 : numtype, numtype_2 : numtype, cvtop__ : cvtop__(numtype_1, numtype_2), num_ : num_(numtype_1)) : num_(numtype_2)* - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), EXTEND_cvtop__(sx), i_1) = [$extend__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Inn_2 : Inn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Inn_2 : Inn <: numtype), WRAP_cvtop__, i_1) = [$wrap__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_cvtop__(sx), f_1) = lift($trunc__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, sx : sx, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), TRUNC_SAT_cvtop__(sx), f_1) = lift($trunc_sat__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Inn_2 : Inn <: numtype)), sx, f_1)) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, sx : sx, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), CONVERT_cvtop__(sx), i_1) = [$convert__($sizenn1((Inn_1 : Inn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), sx, i_1)] - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), PROMOTE_cvtop__, f_1) = $promote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Fnn_2 : Fnn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Fnn_2 : Fnn <: numtype), DEMOTE_cvtop__, f_1) = $demote__($sizenn1((Fnn_1 : Fnn <: numtype)), $sizenn2((Fnn_2 : Fnn <: numtype)), f_1) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Inn_1 : Inn, Fnn_2 : Fnn, i_1 : num_((Inn_1 : Inn <: numtype))}((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), REINTERPRET_cvtop__, i_1) = [$reinterpret__((Inn_1 : Inn <: numtype), (Fnn_2 : Fnn <: numtype), i_1)] -- if ($size((Inn_1 : Inn <: numtype)) = $size((Fnn_2 : Fnn <: numtype))) - ;; ../../../../specification/wasm-3.0/3.1-numerics.scalar.spectec + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec def $cvtop__{Fnn_1 : Fnn, Inn_2 : Inn, f_1 : num_((Fnn_1 : Fnn <: numtype))}((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), REINTERPRET_cvtop__, f_1) = [$reinterpret__((Fnn_1 : Fnn <: numtype), (Inn_2 : Inn <: numtype), f_1)] -- if ($size((Fnn_1 : Fnn <: numtype)) = $size((Inn_2 : Inn <: numtype))) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $iconcat_(numtype : numtype, N : N, num_ : num_(numtype), num_ : num_(numtype)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $iconcat_{Inn : Inn, N : N, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), N, i_1, i_2) = $ior_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_1!`%`_num_.0,)), $ishl_(N, $iextend_(N, $sizenn((Inn : Inn <: numtype)), U_sx, `%`_iN(i_2!`%`_num_.0,)), `%`_u32($sizenn((Inn : Inn <: numtype)),))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $isplit_(numtype : numtype, N : N, iN : iN(N)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $isplit_{Inn : Inn, N : N, i_1 : iN(N)}((Inn : Inn <: numtype), N, i_1) = ($wrap__(N, $sizenn((Inn : Inn <: numtype)), i_1), $wrap__(N, $sizenn((Inn : Inn <: numtype)), $ishr_(N, U_sx, i_1, `%`_u32($sizenn((Inn : Inn <: numtype)),)))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop_(numtype : numtype, N : N, wideop_ : wideop_(numtype), iN : iN(N), iN : iN(N)) : iN(N) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, ADD128_wideop_, i_1, i_2) = $iadd_(N, i_1, i_2) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop_{Inn : Inn, N : N, i_1 : iN(N), i_2 : iN(N)}((Inn : Inn <: numtype), N, SUB128_wideop_, i_1, i_2) = $isub_(N, i_1, i_2) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $wideop__(numtype : numtype, wideop_ : wideop_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $wideop__{Inn : Inn, wideop : wideop_((Inn : Inn <: numtype)), i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype)), i_3 : num_((Inn : Inn <: numtype)), i_4 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), wideop, i_1, i_2, i_3, i_4) = $isplit_((Inn : Inn <: numtype), 128, $wideop_((Inn : Inn <: numtype), 128, wideop, $iconcat_((Inn : Inn <: numtype), 128, i_1, i_2), $iconcat_((Inn : Inn <: numtype), 128, i_3, i_4))) + +;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec +def $extwideop__(numtype : numtype, extwideop_ : extwideop_(numtype), num_ : num_(numtype), num_ : num_(numtype)) : (num_(numtype), num_(numtype)) + ;; ../../../../specification/wasm-latest/3.1-numerics.scalar.spectec + def $extwideop__{Inn : Inn, sx : sx, i_1 : num_((Inn : Inn <: numtype)), i_2 : num_((Inn : Inn <: numtype))}((Inn : Inn <: numtype), MUL_WIDE_extwideop_(sx), i_1, i_2) = $isplit_((Inn : Inn <: numtype), 128, $imul_(128, $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_1!`%`_num_.0,)), $iextend_(128, $sizenn((Inn : Inn <: numtype)), sx, `%`_iN(i_2!`%`_num_.0,)))) + +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lanes_(shape : shape, vec_ : vec_(V128_Vnn)) : lane_($lanetype(shape))* -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $inv_lanes_(shape : shape, lane_($lanetype(shape))*) : vec_(V128_Vnn) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : zero? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = zero?{zero <- `zero?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?(zero) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $zeroop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?() -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2)) : half? - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx)) = ?(half) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx)) = half?{half <- `half?`} - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, `zero?` : zero?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`})) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, zero : zero}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(zero)) = ?() - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $halfop{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__) = ?(LOW_half) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half(half : half, nat : nat, nat : nat) : nat - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(LOW_half, i, j) = i - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $half{i : nat, j : nat}(HIGH_half, i, j) = j -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $iswizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_(N : N, iN(N)*, iN : iN(N)) : iN(N) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = c*{c <- `c*`}[i!`%`_iN.0] -- if (i!`%`_iN.0 < |c*{c <- `c*`}|) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = `%`_iN(0,) -- if ($signed_(N, i!`%`_iN.0) < (0 : nat <:> int)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $irelaxed_swizzle_lane_{N : N, `c*` : iN(N)*, i : iN(N)}(N, c*{c <- `c*`}, i) = $relaxed2($R_swizzle, syntax iN(N), `%`_iN(0,), c*{c <- `c*`}[(i!`%`_iN.0 \ |c*{c <- `c*`}|)]) -- otherwise -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_(shape : shape, def $f_(N : N, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivunop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_(shape : shape, def $f_(N : N, fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvunop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1)*{c_1 <- `c_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = [$inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})] -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbinopsxnd_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvbinop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)*{c_1 <- `c_1*`, c_2 <- `c_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivternopnd_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N), iN : iN(N)) : iN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Jnn : Jnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Jnn : Jnn <: lanetype)), $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvternop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N), fN : fN(N)) : fN(N)*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn), `c**` : lane_((Fnn : Fnn <: lanetype))**, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_3*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2, v_3) = $inv_lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), c*{c <- `c*`})*{`c*` <- `c**`} -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c_3*{c_3 <- `c_3*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_3)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_((Fnn : Fnn <: lanetype)), $f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2, c_3)*{c_1 <- `c_1*`, c_2 <- `c_2*`, c_3 <- `c_3*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_(shape : shape, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), iN : iN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivrelopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), iN : iN(N)) : u32, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $lsizenn((Jnn : Jnn <: lanetype)), S_sx, `%`_iN($f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_(shape : shape, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $fvrelop_{Fnn : Fnn, M : M, def $f_(N : N, fN : fN(N), fN : fN(N)) : u32, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), Inn : Inn, `c*` : iN($sizenn((Fnn : Fnn <: numtype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Fnn : Fnn <: lanetype), M)))*}(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Inn : Inn <: lanetype), M), `%`_lane_(c!`%`_iN.0,)*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Fnn : Fnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $extend__(1, $sizenn((Fnn : Fnn <: numtype)), S_sx, `%`_iN($f_($sizenn((Fnn : Fnn <: numtype)), c_1, c_2)!`%`_u32.0,))*{c_1 <- `c_1*`, c_2 <- `c_2*`}) -- if ($isize(Inn) = $fsize(Fnn)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_(shape : shape, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftop_{Jnn : Jnn, M : M, def $f_(N : N, iN : iN(N), u32 : u32) : iN(N), v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_(shape : shape, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshiftopsx_{Jnn : Jnn, M : M, def $f_(N : N, sx : sx, iN : iN(N), u32 : u32) : iN(N), sx : sx, v_1 : vec_(V128_Vnn), i : u32, `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, sx, v_1, i) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), sx, c_1, i)*{c_1 <- `c_1*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_(shape : shape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivbitmaskop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), c : iN(32), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1) = $irev_(32, c) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if ($ibits_(32, c) = `%`_bit($ilt_($lsizenn((Jnn : Jnn <: lanetype)), S_sx, c_1, `%`_iN(0,))!`%`_u32.0,)*{c_1 <- `c_1*`} ++ `%`_bit(0,)^(((32 : nat <:> int) - (M!`%`_M.0 : nat <:> int)) : int <:> nat){}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_(shape : shape, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivswizzlop_{Jnn : Jnn, M : M, def $f_(N : N, iN(N)*, iN : iN(N)) : iN(N), v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn((Jnn : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $f_, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = $f_($lsizenn((Jnn : Jnn <: lanetype)), c_1*{c_1 <- `c_1*`}, c_2)*{c_2 <- `c_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_(shape : shape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivshufflop_{Jnn : Jnn, M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}(`%X%`_shape((Jnn : Jnn <: lanetype), M), i*{i <- `i*`}, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v_2)) -- if (c*{c <- `c*`} = c_1*{c_1 <- `c_1*`} ++ c_2*{c_2 <- `c_2*`}[i!`%`_laneidx.0]*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_(vectype : vectype, vvunop : vvunop, vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvunop_{Vnn : Vnn, v : vec_(Vnn)}(Vnn, NOT_vvunop, v) = [$inot_($vsizenn(Vnn), v)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_(vectype : vectype, vvbinop : vvbinop, vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, AND_vvbinop, v_1, v_2) = [$iand_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, ANDNOT_vvbinop, v_1, v_2) = [$iandnot_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, OR_vvbinop, v_1, v_2) = [$ior_($vsizenn(Vnn), v_1, v_2)] - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvbinop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn)}(Vnn, XOR_vvbinop, v_1, v_2) = [$ixor_($vsizenn(Vnn), v_1, v_2)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_(vectype : vectype, vvternop : vvternop, vec_ : vec_(vectype), vec_ : vec_(vectype), vec_ : vec_(vectype)) : vec_(vectype)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vvternop_{Vnn : Vnn, v_1 : vec_(Vnn), v_2 : vec_(Vnn), v_3 : vec_(Vnn)}(Vnn, BITSELECT_vvternop, v_1, v_2, v_3) = [$ibitselect_($vsizenn(Vnn), v_1, v_2, v_3)] -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_(shape : shape, vunop_ : vunop_(shape), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ABS_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEG_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fneg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SQRT_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsqrt_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), CEIL_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fceil_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), FLOOR_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ffloor_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), TRUNC_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $ftrunc_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Fnn : Fnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NEAREST_vunop_, v) = $fvunop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fnearest_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ABS_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iabs_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NEG_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ineg_, v) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vunop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), POPCNT_vunop_, v) = $ivunop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ipopcnt_, v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_(shape : shape, vbinop_ : vbinop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $ivbinop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), ADD_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iadd_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), SUB_SAT_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $isub_sat_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MIN_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imin_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), MAX_vbinop_(sx), v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $imax_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), AVGRU_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iavgr_, U_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), Q15MULR_SATS_vbinop_, v_1, v_2) = $ivbinopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $iq15mulr_sat_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_Q15MULRS_vbinop_, v_1, v_2) = $ivbinopsxnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_q15mulr_, S_sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), ADD_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fadd_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), SUB_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fsub_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MUL_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmul_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), DIV_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fdiv_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmin_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), PMAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fpmax_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MIN_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_min_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbinop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MAX_vbinop_, v_1, v_2) = $fvbinop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_max_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_(shape : shape, vternop_ : vternop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), RELAXED_LANESELECT_vternop_, v_1, v_2, v_3) = $ivternopnd_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $irelaxed_laneselect_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_MADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_madd_, v_1, v_2, v_3) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vternop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v_3 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), RELAXED_NMADD_vternop_, v_1, v_2, v_3) = $fvternop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $frelaxed_nmadd_, v_1, v_2, v_3) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_(shape : shape, vrelop_ : vrelop_(shape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ieq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $ivrelop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ine_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ilt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GT_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $igt_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), LE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ile_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Jnn : Jnn, M : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Jnn : Jnn <: lanetype), M), GE_vrelop_(sx,), v_1, v_2) = $ivrelopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ige_, sx, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), EQ_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $feq_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), NE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fne_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $flt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GT_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fgt_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), LE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fle_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vrelop_{Fnn : Fnn, M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%X%`_shape((Fnn : Fnn <: lanetype), M), GE_vrelop_, v_1, v_2) = $fvrelop_(`%X%`_shape((Fnn : Fnn <: lanetype), M), def $fge_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), lane_ : lane_($lanetype(shape_1))) : lane_($lanetype(shape_2))* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), EXTEND_vcvtop__(half, sx), c_1) = [c] -- if (c = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Jnn_1 : Jnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, `half?` : half?, sx : sx, c_1 : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1))), c : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), CONVERT_vcvtop__(half?{half <- `half?`}, sx), c_1) = [c] -- if (c = $convert__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), TRUNC_SAT_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $trunc_sat__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Inn_2 : Inn, M_2 : M, sx : sx, `zero?` : zero?, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c?` : iN($lsizenn2((Inn_2 : Inn <: lanetype)))?}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Inn_2 : Inn <: lanetype), M_2), RELAXED_TRUNC_vcvtop__(sx, zero?{zero <- `zero?`}), c_1) = lift(c?{c <- `c?`}) -- if (c?{c <- `c?`} = $relaxed_trunc__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Inn_2 : Inn <: lanetype)), sx, c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), DEMOTE_vcvtop__(ZERO_zero), c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $demote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $lcvtop__{Fnn_1 : Fnn, M_1 : M, Fnn_2 : Fnn, M_2 : M, c_1 : lane_($lanetype(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1))), `c*` : fN($lsizenn2((Fnn_2 : Fnn <: lanetype)))*}(`%X%`_shape((Fnn_1 : Fnn <: lanetype), M_1), `%X%`_shape((Fnn_2 : Fnn <: lanetype), M_2), PROMOTELOW_vcvtop__, c_1) = c*{c <- `c*`} -- if (c*{c <- `c*`} = $promote__($lsizenn1((Fnn_1 : Fnn <: lanetype)), $lsizenn2((Fnn_2 : Fnn <: lanetype)), c_1)) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__(shape_1 : shape, shape_2 : shape, vcvtop__ : vcvtop__(shape_1, shape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M : M, Lnn_2 : Lnn, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, v_1) = v -- if (($halfop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?()) /\ ($zeroop(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop) = ?())) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M), `%X%`_shape(Lnn_2, M), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), half : half, `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($halfop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(half)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)[$half(half, 0, M_2!`%`_M.0) : M_2!`%`_M.0]) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vcvtop__{Lnn_1 : Lnn, M_1 : M, Lnn_2 : Lnn, M_2 : M, vcvtop : vcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2)), v_1 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape(Lnn_1, M_1)))*, `c**` : lane_(Lnn_2)**}(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, v_1) = v -- if ($zeroop(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop) = ?(ZERO_zero)) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape(Lnn_1, M_1), v_1)) -- if (c*{c <- `c*`}*{`c*` <- `c**`} = $setproduct_(syntax lane_(Lnn_2), $lcvtop__(`%X%`_shape(Lnn_1, M_1), `%X%`_shape(Lnn_2, M_2), vcvtop, c_1)*{c_1 <- `c_1*`} ++ [$zero(Lnn_2)]^M_1!`%`_M.0{})) -- if (v <- $inv_lanes_(`%X%`_shape(Lnn_2, M_2), c*{c <- `c*`})*{`c*` <- `c**`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_(ishape : ishape, vshiftop_ : vshiftop_(ishape), vec_ : vec_(V128_Vnn), u32 : u32) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHL_vshiftop_, v, i) = $ivshiftop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishl_, v, i) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshiftop_{Jnn : Jnn, M : M, sx : sx, v : vec_(V128_Vnn), i : u32}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), SHR_vshiftop_(sx), v, i) = $ivshiftopsx_(`%X%`_shape((Jnn : Jnn <: lanetype), M), def $ishr_, sx, v, i) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_(ishape : ishape, vec_ : vec_(V128_Vnn)) : u32 - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vbitmaskop_{Jnn : Jnn, M : M, v : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), v) = $ivbitmaskop_(`%X%`_shape((Jnn : Jnn <: lanetype), M), v) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_(bshape : bshape, vswizzlop_ : vswizzlop_(bshape), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $iswizzle_lane_, v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vswizzlop_{M : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), RELAXED_SWIZZLE_vswizzlop_, v_1, v_2) = $ivswizzlop_(`%X%`_shape(I8_lanetype, M), def $irelaxed_swizzle_lane_, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_(bshape : bshape, laneidx*, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vshufflop_{M : M, `i*` : laneidx*, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_bshape(`%X%`_shape(I8_lanetype, M),), i*{i <- `i*`}, v_1, v_2) = $ivshufflop_(`%X%`_shape(I8_lanetype, M), i*{i <- `i*`}, v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vnarrowop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), v : vec_(V128_Vnn), `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsize((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), sx, v_1, v_2) = v -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)) @@ -29302,40 +29501,40 @@ def $vnarrowop__(shape_1 : shape, shape_2 : shape, sx : sx, vec_ : vec_(V128_Vnn -- if (c'_2*{c'_2 <- `c'_2*`} = $narrow__($lsize((Jnn_1 : Jnn <: lanetype)), $lsize((Jnn_2 : Jnn <: lanetype)), sx, c_2)*{c_2 <- `c_2*`}) -- if (v = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c'_1*{c'_1 <- `c'_1*`} ++ c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_(N : N, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivadd_pairwise_{N : N, `i*` : iN(N)*, `j_1*` : N*, `j_2*` : N*}(N, i*{i <- `i*`}) = $iadd_(N, `%`_iN(j_1,), `%`_iN(j_2,))*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax N, [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = i!`%`_iN.0*{i <- `i*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*) : iN(N)*, sx : sx, v_1 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx, v_1) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)) -- if (c'_1*{c'_1 <- `c'_1*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx, c_1)*{c_1 <- `c_1*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__(ishape_1 : ishape, ishape_2 : ishape, vextunop__ : vextunop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextunop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, sx : sx, v_1 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(sx), v_1) = $ivextunop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivadd_pairwise_, sx, v_1) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_(N, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivdot_sat_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*, `j_1*` : iN(N)*, `j_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $iadd_sat_(N, S_sx, j_1, j_2)*{j_1 <- `j_1*`, j_2 <- `j_2*`} -- if ($concat_(syntax iN(N), [j_1 j_2]*{j_1 <- `j_1*`, j_2 <- `j_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`}) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx : sx, sx : sx, laneidx : laneidx, laneidx : laneidx, vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, def $f_(N : N, iN(N)*, iN(N)*) : iN(N)*, sx_1 : sx, sx_2 : sx, i : laneidx, k : laneidx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn), `c*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c_1*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c_2*` : lane_($lanetype(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1)))*, `c'_1*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*, `c'_2*` : iN($lsizenn2((Jnn_2 : Jnn <: lanetype)))*}(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $f_, sx_1, sx_2, i, k, v_1, v_2) = $inv_lanes_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), c*{c <- `c*`}) -- if (c_1*{c_1 <- `c_1*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_1)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) -- if (c_2*{c_2 <- `c_2*`} = $lanes_(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), v_2)[i!`%`_laneidx.0 : k!`%`_laneidx.0]) @@ -29343,23 +29542,23 @@ def $ivextbinop__(shape_1 : shape, shape_2 : shape, def $f_(N : N, iN(N)*, iN(N) -- if (c'_2*{c'_2 <- `c'_2*`} = $extend__($lsizenn1((Jnn_1 : Jnn <: lanetype)), $lsizenn2((Jnn_2 : Jnn <: lanetype)), sx_2, c_2)*{c_2 <- `c_2*`}) -- if (c*{c <- `c*`} = $f_($lsizenn2((Jnn_2 : Jnn <: lanetype)), c'_1*{c'_1 <- `c'_1*`}, c'_2*{c'_2 <- `c'_2*`})) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_(N : N, iN(N)*, iN(N)*) : iN(N)* - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $ivmul_{N : N, `i_1*` : iN(N)*, `i_2*` : iN(N)*}(N, i_1*{i_1 <- `i_1*`}, i_2*{i_2 <- `i_2*`}) = $imul_(N, i_1, i_2)*{i_1 <- `i_1*`, i_2 <- `i_2*`} -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__(ishape_1 : ishape, ishape_2 : ishape, vextbinop__ : vextbinop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, half : half, sx : sx, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTMUL_vextbinop__(half, sx), v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivmul_, sx, sx, `%`_laneidx($half(half, 0, M_2!`%`_M.0),), `%`_laneidx(M_2!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_, S_sx, S_sx, `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextbinop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, v_1 : vec_(V128_Vnn), v_2 : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOTS_vextbinop__, v_1, v_2) = $ivextbinop__(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1), `%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), def $ivdot_sat_, S_sx, $relaxed2($R_idot, syntax sx, S_sx, U_sx), `%`_laneidx(0,), `%`_laneidx(M_1!`%`_M.0,), v_1, v_2) -;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec +;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextternop__(ishape_1, ishape_2), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn), vec_ : vec_(V128_Vnn)) : vec_(V128_Vnn) - ;; ../../../../specification/wasm-3.0/3.2-numerics.vector.spectec + ;; ../../../../specification/wasm-latest/3.2-numerics.vector.spectec def $vextternop__{Jnn_1 : Jnn, M_1 : M, Jnn_2 : Jnn, M_2 : M, c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), c : vec_(V128_Vnn), Jnn : Jnn, M : M, c' : vec_(V128_Vnn), c'' : vec_(V128_Vnn)}(`%`_ishape(`%X%`_shape((Jnn_1 : Jnn <: lanetype), M_1),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), RELAXED_DOT_ADDS_vextternop__, c_1, c_2, c_3) = c -- if ($jsizenn(Jnn) = (2 * $lsizenn1((Jnn_1 : Jnn <: lanetype)))) -- if (M!`%`_M.0 = (2 * M_2!`%`_M.0)) @@ -29367,57 +29566,57 @@ def $vextternop__(ishape_1 : ishape, ishape_2 : ishape, vextternop__ : vextterno -- if (c'' = $vextunop__(`%`_ishape(`%X%`_shape((Jnn : Jnn <: lanetype), M),), `%`_ishape(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2),), EXTADD_PAIRWISE_vextunop__(S_sx), c')) -- if (c <- $vbinop_(`%X%`_shape((Jnn_2 : Jnn <: lanetype), M_2), ADD_vbinop_, c'', c_3)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax num = | CONST(numtype : numtype, num_(numtype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax vec = | VCONST(vectype : vectype, vec_(vectype)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax result = | _VALS(val*) | `(REF.EXN_ADDR%)THROW_REF`(exnaddr) | TRAP -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostfunc = | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funccode = | FUNC(typeidx : typeidx, `local*` : local*, expr : expr) | _HOSTFUNC(text) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax taginst = { TYPE tagtype } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax globalinst = { TYPE globaltype, VALUE val } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax meminst = { TYPE memtype, BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax tableinst = { TYPE tabletype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax funcinst = { TYPE deftype, @@ -29425,24 +29624,24 @@ syntax funcinst = CODE funccode } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax datainst = { BYTES byte* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax eleminst = { TYPE elemtype, REFS ref* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax packval = | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax fieldval = | CONST(numtype : numtype, num_(numtype)) | VCONST(vectype : vectype, vec_(vectype)) @@ -29456,28 +29655,28 @@ syntax fieldval = | `REF.EXTERN`(ref) | PACK(packtype : packtype, iN($psizenn(packtype))) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax structinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax arrayinst = { TYPE deftype, FIELDS fieldval* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax exninst = { TAG tagaddr, FIELDS val* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax store = { TAGS taginst*, @@ -29492,296 +29691,296 @@ syntax store = EXNS exninst* } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax state = | `%;%`(store : store, frame : frame) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax config = | `%;%`(state : state, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki : nat - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $Ki = 1024 -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_(storagetype : storagetype, val : val) : fieldval - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), val) = (val : val <: fieldval) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $packfield_{packtype : packtype, i : num_(I32_numtype)}((packtype : packtype <: storagetype), CONST_val(I32_numtype, i)) = PACK_fieldval(packtype, $wrap__(32, $psize(packtype), i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_(storagetype : storagetype, sx?, fieldval : fieldval) : val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{valtype : valtype, val : val}((valtype : valtype <: storagetype), ?(), (val : val <: fieldval)) = val - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $unpackfield_{packtype : packtype, sx : sx, i : iN($psizenn(packtype))}((packtype : packtype <: storagetype), ?(sx), PACK_fieldval(packtype, i)) = CONST_val(I32_numtype, $extend__($psize(packtype), 32, sx, i)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:190.1-190.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:190.1-190.86 def $tagsxa(externaddr*) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:196.1-196.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:196.1-196.23 def $tagsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:197.1-197.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:197.1-197.42 def $tagsxa{a : addr, `xa*` : externaddr*}([TAG_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tagsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:198.1-198.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:198.1-198.57 def $tagsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tagsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:191.1-191.89 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:191.1-191.89 def $globalsxa(externaddr*) : globaladdr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:200.1-200.26 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:200.1-200.26 def $globalsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:201.1-201.51 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:201.1-201.51 def $globalsxa{a : addr, `xa*` : externaddr*}([GLOBAL_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $globalsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:202.1-202.63 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:202.1-202.63 def $globalsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $globalsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:192.1-192.86 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:192.1-192.86 def $memsxa(externaddr*) : memaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:204.1-204.23 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:204.1-204.23 def $memsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:205.1-205.42 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:205.1-205.42 def $memsxa{a : addr, `xa*` : externaddr*}([MEM_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $memsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:206.1-206.57 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:206.1-206.57 def $memsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $memsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:193.1-193.88 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:193.1-193.88 def $tablesxa(externaddr*) : tableaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:208.1-208.25 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:208.1-208.25 def $tablesxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:209.1-209.48 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:209.1-209.48 def $tablesxa{a : addr, `xa*` : externaddr*}([TABLE_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $tablesxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:210.1-210.61 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:210.1-210.61 def $tablesxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $tablesxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:194.1-194.87 +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:194.1-194.87 def $funcsxa(externaddr*) : funcaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:212.1-212.24 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:212.1-212.24 def $funcsxa([]) = [] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:213.1-213.45 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:213.1-213.45 def $funcsxa{a : addr, `xa*` : externaddr*}([FUNC_externaddr(a)] ++ xa*{xa <- `xa*`}) = [a] ++ $funcsxa(xa*{xa <- `xa*`}) - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec:214.1-214.59 + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec:214.1-214.59 def $funcsxa{externaddr : externaddr, `xa*` : externaddr*}([externaddr] ++ xa*{xa <- `xa*`}) = $funcsxa(xa*{xa <- `xa*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $store{s : store, f : frame}(`%;%`_state(s, f)) = s -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $frame{s : store, f : frame}(`%;%`_state(s, f)) = f -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr(state : state) : tagaddr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tagaddr{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame.TAGS_moduleinst -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst(state : state) : moduleinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $moduleinst{s : store, f : frame}(`%;%`_state(s, f)) = f.MODULE_frame -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst(state : state) : taginst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $taginst{s : store, f : frame}(`%;%`_state(s, f)) = s.TAGS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst(state : state) : globalinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $globalinst{s : store, f : frame}(`%;%`_state(s, f)) = s.GLOBALS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst(state : state) : meminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $meminst{s : store, f : frame}(`%;%`_state(s, f)) = s.MEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst(state : state) : tableinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tableinst{s : store, f : frame}(`%;%`_state(s, f)) = s.TABLES_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst(state : state) : funcinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $funcinst{s : store, f : frame}(`%;%`_state(s, f)) = s.FUNCS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst(state : state) : datainst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $datainst{s : store, f : frame}(`%;%`_state(s, f)) = s.DATAS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst(state : state) : eleminst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $eleminst{s : store, f : frame}(`%;%`_state(s, f)) = s.ELEMS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst(state : state) : structinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $structinst{s : store, f : frame}(`%;%`_state(s, f)) = s.STRUCTS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst(state : state) : arrayinst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $arrayinst{s : store, f : frame}(`%;%`_state(s, f)) = s.ARRAYS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst(state : state) : exninst* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $exninst{s : store, f : frame}(`%;%`_state(s, f)) = s.EXNS_store -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof(state : state) : frame - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $fof{z : state}(z) = $frame(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type(state : state, typeidx : typeidx) : deftype - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $type{z : state, x : idx}(z, x) = $fof(z).MODULE_frame.TYPES_moduleinst[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof(state : state) : store - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $sof{z : state}(z) = $store(z) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag(state : state, tagidx : tagidx) : taginst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $tag{z : state, x : idx}(z, x) = $sof(z).TAGS_store[$fof(z).MODULE_frame.TAGS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global(state : state, globalidx : globalidx) : globalinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $global{z : state, x : idx}(z, x) = $sof(z).GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem(state : state, memidx : memidx) : meminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $mem{z : state, x : idx}(z, x) = $sof(z).MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table(state : state, tableidx : tableidx) : tableinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $table{z : state, x : idx}(z, x) = $sof(z).TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func(state : state, funcidx : funcidx) : funcinst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $func{z : state, x : idx}(z, x) = $sof(z).FUNCS_store[$fof(z).MODULE_frame.FUNCS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data(state : state, dataidx : dataidx) : datainst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $data{z : state, x : idx}(z, x) = $sof(z).DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem(state : state, tableidx : tableidx) : eleminst - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $elem{z : state, x : idx}(z, x) = $sof(z).ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local(state : state, localidx : localidx) : val? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $local{z : state, x : idx}(z, x) = $fof(z).LOCALS_frame[x!`%`_idx.0] -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local(state : state, localidx : localidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_local{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z), $fof(z)[LOCALS_frame[x!`%`_idx.0] = ?(v)]) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global(state : state, globalidx : globalidx, val : val) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_global{z : state, x : idx, v : val}(z, x, v) = `%;%`_state($sof(z)[GLOBALS_store[$fof(z).MODULE_frame.GLOBALS_moduleinst[x!`%`_idx.0]].VALUE_globalinst = v], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table(state : state, tableidx : tableidx, nat : nat, ref : ref) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_table{z : state, x : idx, i : nat, r : ref}(z, x, i, r) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]].REFS_tableinst[i] = r], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst(state : state, tableidx : tableidx, tableinst : tableinst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_tableinst{z : state, x : idx, ti : tableinst}(z, x, ti) = `%;%`_state($sof(z)[TABLES_store[$fof(z).MODULE_frame.TABLES_moduleinst[x!`%`_idx.0]] = ti], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem(state : state, memidx : memidx, nat : nat, nat : nat, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_mem{z : state, x : idx, i : nat, j : nat, `b*` : byte*}(z, x, i, j, b*{b <- `b*`}) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]].BYTES_meminst[i : j] = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst(state : state, memidx : memidx, meminst : meminst) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_meminst{z : state, x : idx, mi : meminst}(z, x, mi) = `%;%`_state($sof(z)[MEMS_store[$fof(z).MODULE_frame.MEMS_moduleinst[x!`%`_idx.0]] = mi], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem(state : state, elemidx : elemidx, ref*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_elem{z : state, x : idx, `r*` : ref*}(z, x, r*{r <- `r*`}) = `%;%`_state($sof(z)[ELEMS_store[$fof(z).MODULE_frame.ELEMS_moduleinst[x!`%`_idx.0]].REFS_eleminst = r*{r <- `r*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data(state : state, dataidx : dataidx, byte*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_data{z : state, x : idx, `b*` : byte*}(z, x, b*{b <- `b*`}) = `%;%`_state($sof(z)[DATAS_store[$fof(z).MODULE_frame.DATAS_moduleinst[x!`%`_idx.0]].BYTES_datainst = b*{b <- `b*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct(state : state, structaddr : structaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_struct{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[STRUCTS_store[a].FIELDS_structinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array(state : state, arrayaddr : arrayaddr, nat : nat, fieldval : fieldval) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $with_array{z : state, a : addr, i : nat, fv : fieldval}(z, a, i, fv) = `%;%`_state($sof(z)[ARRAYS_store[a].FIELDS_arrayinst[i] = fv], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst(state : state, structinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_structinst{z : state, `si*` : structinst*}(z, si*{si <- `si*`}) = `%;%`_state($sof(z)[STRUCTS_store =++ si*{si <- `si*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst(state : state, arrayinst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_arrayinst{z : state, `ai*` : arrayinst*}(z, ai*{ai <- `ai*`}) = `%;%`_state($sof(z)[ARRAYS_store =++ ai*{ai <- `ai*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst(state : state, exninst*) : state - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $add_exninst{z : state, `exn*` : exninst*}(z, exn*{exn <- `exn*`}) = `%;%`_state($sof(z)[EXNS_store =++ exn*{exn <- `exn*`}], $fof(z)) -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growtable{tableinst : tableinst, n : n, r : ref, tableinst' : tableinst, at : addrtype, i : u64, `j?` : u64?, rt : reftype, `r'*` : ref*, i' : u64}(tableinst, n, r) = ?(tableinst') -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`}}) -- if (tableinst' = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i', j?{j <- `j?`}), rt), REFS r'*{r' <- `r'*`} ++ r^n{}}) @@ -29790,9 +29989,9 @@ def $growtable(tableinst : tableinst, nat : nat, ref : ref) : tableinst? -- if ((i'!`%`_u64.0 : nat <:> int) <= (((2 ^ $size((at : addrtype <: numtype))) : nat <:> int) - (1 : nat <:> int))) def $growtable{x0 : tableinst, x1 : nat, x2 : ref}(x0, x1, x2) = ?() -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem(meminst : meminst, nat : nat) : meminst? - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $growmem{meminst : meminst, n : n, meminst' : meminst, at : addrtype, i : u64, `j?` : u64?, `b*` : byte*, i' : u64}(meminst, n) = ?(meminst') -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES b*{b <- `b*`}}) -- if (meminst' = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i', j?{j <- `j?`})), BYTES b*{b <- `b*`} ++ `%`_byte(0,)^(n * (64 * $Ki)){}}) @@ -29801,83 +30000,83 @@ def $growmem(meminst : meminst, nat : nat) : meminst? -- if (i'!`%`_u64.0 <= (2 ^ ((($size((at : addrtype <: numtype)) : nat <:> int) - (16 : nat <:> int)) : int <:> nat))) def $growmem{x0 : meminst, x1 : nat}(x0, x1) = ?() -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec syntax hostcallresult = | RES(store : store, result : result) | BOT -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $hostcall(hostfunc : hostfunc, store : store, val*) : hostcallresult* -;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec +;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(result : result) : instr* - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{`val*` : val*}(_VALS_result(val*{val <- `val*`})) = (val : val <: instr)*{val <- `val*`} - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result{a : addr}(`(REF.EXN_ADDR%)THROW_REF`_result(a)) = [`REF.EXN_ADDR`_instr(a) THROW_REF_instr] - ;; ../../../../specification/wasm-3.0/4.0-execution.configurations.spectec + ;; ../../../../specification/wasm-latest/4.0-execution.configurations.spectec def $lift_result(TRAP_result) = [TRAP_instr] -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Num_ok: `%|-%:%`(store, num, numtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, nt : numtype, c : num_(nt)}: `%|-%:%`(s, CONST_num(nt, c), nt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Vec_ok: `%|-%:%`(store, vec, vectype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, vt : vectype, c : vec_(vt)}: `%|-%:%`(s, VCONST_vec(vt, c), vt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:25.1-25.60 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:25.1-25.60 relation Ref_ok: `%|-%:%`(store, ref, reftype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:35.1-36.36 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:35.1-36.36 rule null{s : store}: `%|-%:%`(s, `REF.NULL_ADDR`_ref, REF_reftype(?(NULL_null), BOT_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:38.1-39.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:38.1-39.31 rule i31{s : store, i : u31}: `%|-%:%`(s, `REF.I31_NUM`_ref(i), REF_reftype(?(), I31_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:41.1-43.31 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:41.1-43.31 rule struct{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.STRUCT_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.STRUCTS_store|) -- if (s.STRUCTS_store[a].TYPE_structinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:45.1-47.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:45.1-47.30 rule array{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.ARRAY_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.ARRAYS_store|) -- if (s.ARRAYS_store[a].TYPE_arrayinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:49.1-51.29 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:49.1-51.29 rule func{s : store, a : addr, dt : deftype}: `%|-%:%`(s, `REF.FUNC_ADDR`_ref(a), REF_reftype(?(), (dt : deftype <: heaptype))) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a].TYPE_funcinst = dt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:53.1-55.24 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:53.1-55.24 rule exn{s : store, a : addr, exn : exninst}: `%|-%:%`(s, `REF.EXN_ADDR`_ref(a), REF_reftype(?(), EXN_heaptype)) -- if (a < |s.EXNS_store|) -- if (s.EXNS_store[a] = exn) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:57.1-58.33 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:57.1-58.33 rule host{s : store, a : addr}: `%|-%:%`(s, `REF.HOST_ADDR`_ref(a), REF_reftype(?(), ANY_heaptype)) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:60.1-63.30 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:60.1-63.30 rule extern{s : store, ref : ref}: `%|-%:%`(s, `REF.EXTERN`_ref(ref), REF_reftype(?(), EXTERN_heaptype)) -- Ref_ok: `%|-%:%`(s, ref, REF_reftype(?(), ANY_heaptype)) -- if (ref =/= `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:65.1-69.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:65.1-69.34 rule sub{s : store, ref : ref, rt : reftype, rt' : reftype}: `%|-%:%`(s, ref, rt) -- Ref_ok: `%|-%:%`(s, ref, rt') @@ -29885,77 +30084,77 @@ relation Ref_ok: `%|-%:%`(store, ref, reftype) -- Reftype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt', rt) } -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Val_ok: `%|-%:%`(store, val, valtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule num{s : store, num : num, nt : numtype}: `%|-%:%`(s, (num : num <: val), (nt : numtype <: valtype)) -- Num_ok: `%|-%:%`(s, num, nt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule vec{s : store, vec : vec, vt : vectype}: `%|-%:%`(s, (vec : vec <: val), (vt : vectype <: valtype)) -- Vec_ok: `%|-%:%`(s, vec, vt) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule ref{s : store, ref : ref, rt : reftype}: `%|-%:%`(s, (ref : ref <: val), (rt : reftype <: valtype)) -- Ref_ok: `%|-%:%`(s, ref, rt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Packval_ok: `%|-%:%`(store, packval, packtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule _{s : store, pt : packtype, c : iN($psizenn(pt))}: `%|-%:%`(s, PACK_packval(pt, c), pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec relation Fieldval_ok: `%|-%:%`(store, fieldval, storagetype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule val{s : store, val : val, t : valtype}: `%|-%:%`(s, (val : val <: fieldval), (t : valtype <: storagetype)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rule packval{s : store, packval : packval, pt : packtype}: `%|-%:%`(s, (packval : packval <: fieldval), (pt : packtype <: storagetype)) -- Packval_ok: `%|-%:%`(s, packval, pt) -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec rec { -;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:104.1-104.84 +;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:104.1-104.84 relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:106.1-108.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:106.1-108.28 rule tag{s : store, a : addr, taginst : taginst}: `%|-%:%`(s, TAG_externaddr(a), TAG_externtype(taginst.TYPE_taginst)) -- if (a < |s.TAGS_store|) -- if (s.TAGS_store[a] = taginst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:110.1-112.34 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:110.1-112.34 rule global{s : store, a : addr, globalinst : globalinst}: `%|-%:%`(s, GLOBAL_externaddr(a), GLOBAL_externtype(globalinst.TYPE_globalinst)) -- if (a < |s.GLOBALS_store|) -- if (s.GLOBALS_store[a] = globalinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:114.1-116.28 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:114.1-116.28 rule mem{s : store, a : addr, meminst : meminst}: `%|-%:%`(s, MEM_externaddr(a), MEM_externtype(meminst.TYPE_meminst)) -- if (a < |s.MEMS_store|) -- if (s.MEMS_store[a] = meminst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:118.1-120.32 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:118.1-120.32 rule table{s : store, a : addr, tableinst : tableinst}: `%|-%:%`(s, TABLE_externaddr(a), TABLE_externtype(tableinst.TYPE_tableinst)) -- if (a < |s.TABLES_store|) -- if (s.TABLES_store[a] = tableinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:122.1-124.30 + ;; ../../../../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)) -- if (a < |s.FUNCS_store|) -- if (s.FUNCS_store[a] = funcinst) - ;; ../../../../specification/wasm-3.0/4.1-execution.values.spectec:126.1-130.37 + ;; ../../../../specification/wasm-latest/4.1-execution.values.spectec:126.1-130.37 rule sub{s : store, externaddr : externaddr, xt : externtype, xt' : externtype}: `%|-%:%`(s, externaddr, xt) -- Externaddr_ok: `%|-%:%`(s, externaddr, xt') @@ -29963,513 +30162,525 @@ relation Externaddr_ok: `%|-%:%`(store, externaddr, externtype) -- Externtype_sub: `%|-%<:%`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, xt', xt) } -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype(moduleinst : moduleinst, valtype : valtype) : valtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_valtype{moduleinst : moduleinst, t : valtype}(moduleinst, t) = $subst_all_valtype(t, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype(moduleinst : moduleinst, reftype : reftype) : reftype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_reftype{moduleinst : moduleinst, rt : reftype}(moduleinst, rt) = $subst_all_reftype(rt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype(moduleinst : moduleinst, globaltype : globaltype) : globaltype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_globaltype{moduleinst : moduleinst, gt : globaltype}(moduleinst, gt) = $subst_all_globaltype(gt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype(moduleinst : moduleinst, memtype : memtype) : memtype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_memtype{moduleinst : moduleinst, mt : memtype}(moduleinst, mt) = $subst_all_memtype(mt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec +;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype(moduleinst : moduleinst, tabletype : tabletype) : tabletype - ;; ../../../../specification/wasm-3.0/4.2-execution.types.spectec + ;; ../../../../specification/wasm-latest/4.2-execution.types.spectec def $inst_tabletype{moduleinst : moduleinst, tt : tabletype}(moduleinst, tt) = $subst_all_tabletype(tt, (moduleinst.TYPES_moduleinst : deftype* <: typeuse*)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_pure: `%~>%`(instr*, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule unreachable: `%~>%`([UNREACHABLE_instr], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule nop: `%~>%`([NOP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule drop{val : val}: `%~>%`([(val : val <: instr) DROP_instr], []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-true`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_1 : val <: instr)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `select-false`{val_1 : val, val_2 : val, c : num_(I32_numtype), `t*?` : valtype*?}: `%~>%`([(val_1 : val <: instr) (val_2 : val <: instr) CONST_instr(I32_numtype, c) SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`})], [(val_2 : val <: instr)]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-true`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_1*{instr_1 <- `instr_1*`})]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `if-false`{c : num_(I32_numtype), bt : blocktype, `instr_1*` : instr*, `instr_2*` : instr*}: `%~>%`([CONST_instr(I32_numtype, c) `IF%%ELSE%`_instr(bt, instr_1*{instr_1 <- `instr_1*`}, instr_2*{instr_2 <- `instr_2*`})], [BLOCK_instr(bt, instr_2*{instr_2 <- `instr_2*`})]) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `label-vals`{n : n, `instr*` : instr*, `val*` : val*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr*{instr <- `instr*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-zero`{n : n, `instr'*` : instr*, `val'*` : val*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`} ++ instr'*{instr' <- `instr'*`}) -- if (l!`%`_labelidx.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-label-succ`{n : n, `instr'*` : instr*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(`%`_labelidx((((l!`%`_labelidx.0 : nat <:> int) - (1 : nat <:> int)) : int <:> nat),))]) -- if (l!`%`_labelidx.0 > 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br-handler`{n : n, `catch*` : catch*, `val*` : val*, l : labelidx, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-true`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], [BR_instr(l)]) -- if (c!`%`_num_.0 =/= 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_if-false`{c : num_(I32_numtype), l : labelidx}: `%~>%`([CONST_instr(I32_numtype, c) BR_IF_instr(l)], []) -- if (c!`%`_num_.0 = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-lt`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l*{l <- `l*`}[i!`%`_num_.0])]) -- if (i!`%`_num_.0 < |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_table-ge`{i : num_(I32_numtype), `l*` : labelidx*, l' : labelidx}: `%~>%`([CONST_instr(I32_numtype, i) BR_TABLE_instr(l*{l <- `l*`}, l')], [BR_instr(l')]) -- if (i!`%`_num_.0 >= |l*{l <- `l*`}|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [BR_instr(l)]) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NULL_instr(l)], [(val : val <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-null`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], []) -- if (val = `REF.NULL_ADDR`_val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_non_null-addr`{val : val, l : labelidx}: `%~>%`([(val : val <: instr) BR_ON_NON_NULL_instr(l)], [(val : val <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `frame-vals`{n : n, f : frame, `val*` : val*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val : val <: instr)^n{val <- `val*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-frame`{n : n, f : frame, `val'*` : val*, `val*` : val*, `instr*` : instr*}: `%~>%`([`FRAME_%{%}%`_instr(n, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)^n{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-label`{n : n, `instr'*` : instr*, `val*` : val*, `instr*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return-handler`{n : n, `catch*` : catch*, `val*` : val*, `instr*` : instr*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr] ++ instr*{instr <- `instr*`})], (val : val <: instr)*{val <- `val*`} ++ [RETURN_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `handler-vals`{n : n, `catch*` : catch*, `val*` : val*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`})], (val : val <: instr)*{val <- `val*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-instrs`{`val*` : val*, `instr*` : instr*}: `%~>%`((val : val <: instr)*{val <- `val*`} ++ [TRAP_instr] ++ instr*{instr <- `instr*`}, [TRAP_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-label`{n : n, `instr'*` : instr*}: `%~>%`([`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-handler`{n : n, `catch*` : catch*}: `%~>%`([`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `trap-frame`{n : n, f : frame}: `%~>%`([`FRAME_%{%}%`_instr(n, f, [TRAP_instr])], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.tee`{val : val, x : idx}: `%~>%`([(val : val <: instr) `LOCAL.TEE`_instr(x)], [(val : val <: instr) (val : val <: instr) `LOCAL.SET`_instr(x)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.i31`{i : num_(I32_numtype)}: `%~>%`([CONST_instr(I32_numtype, i) `REF.I31`_instr], [`REF.I31_NUM`_instr($wrap__(32, 31, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-true`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.is_null-false`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.IS_NULL`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [TRAP_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.as_non_null-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `REF.AS_NON_NULL`_instr], [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-null`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- if ((ref_1 = `REF.NULL_ADDR`_ref) /\ (ref_2 = `REF.NULL_ADDR`_ref)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-true`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(1,))]) -- otherwise -- if (ref_1 = ref_2) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.eq-false`{ref_1 : ref, ref_2 : ref}: `%~>%`([(ref_1 : ref <: instr) (ref_2 : ref <: instr) `REF.EQ`_instr], [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-null`{sx : sx}: `%~>%`([`REF.NULL_ADDR`_instr `I31.GET`_instr(sx)], [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `i31.get-num`{i : u31, sx : sx}: `%~>%`([`REF.I31_NUM`_instr(i) `I31.GET`_instr(sx)], [CONST_instr(I32_numtype, $extend__(31, 32, sx, i))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new`{val : val, n : n, x : idx}: `%~>%`([(val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW`_instr(x)], (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-null`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.NULL_ADDR`_instr]) -- if (ref = `REF.NULL_ADDR`_ref) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `extern.convert_any-addr`{ref : ref}: `%~>%`([(ref : ref <: instr) `EXTERN.CONVERT_ANY`_instr], [`REF.EXTERN`_instr(ref)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-null`: `%~>%`([`REF.NULL_ADDR`_instr `ANY.CONVERT_EXTERN`_instr], [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `any.convert_extern-addr`{ref : ref}: `%~>%`([`REF.EXTERN`_instr(ref) `ANY.CONVERT_EXTERN`_instr], [(ref : ref <: instr)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-val`{nt : numtype, c_1 : num_(nt), unop : unop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [CONST_instr(nt, c)]) -- if (|$unop_(nt, unop, c_1)| > 0) -- if (c <- $unop_(nt, unop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `unop-trap`{nt : numtype, c_1 : num_(nt), unop : unop_(nt)}: `%~>%`([CONST_instr(nt, c_1) UNOP_instr(nt, unop)], [TRAP_instr]) -- if ($unop_(nt, unop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-val`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt), c : num_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [CONST_instr(nt, c)]) -- if (|$binop_(nt, binop, c_1, c_2)| > 0) -- if (c <- $binop_(nt, binop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `binop-trap`{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), binop : binop_(nt)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) BINOP_instr(nt, binop)], [TRAP_instr]) -- if ($binop_(nt, binop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule testop{nt : numtype, c_1 : num_(nt), testop : testop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) TESTOP_instr(nt, testop)], [CONST_instr(I32_numtype, c)]) -- if (c = $testop_(nt, testop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule relop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), relop : relop_(nt), c : num_(I32_numtype)}: `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) RELOP_instr(nt, relop)], [CONST_instr(I32_numtype, c)]) -- if (c = $relop_(nt, relop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-val`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2), c : num_(nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [CONST_instr(nt_2, c)]) -- if (|$cvtop__(nt_1, nt_2, cvtop, c_1)| > 0) -- if (c <- $cvtop__(nt_1, nt_2, cvtop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `cvtop-trap`{nt_1 : numtype, c_1 : num_(nt_1), nt_2 : numtype, cvtop : cvtop__(nt_1, nt_2)}: `%~>%`([CONST_instr(nt_1, c_1) CVTOP_instr(nt_2, nt_1, cvtop)], [TRAP_instr]) -- if ($cvtop__(nt_1, nt_2, cvtop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule wideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), c_3 : num_(nt), c_4 : num_(nt), wideop_nt : wideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) CONST_instr(nt, c_3) CONST_instr(nt, c_4) WIDEOP_instr(nt, wideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if (|[$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]| > 0) + -- if ((c_5, c_6) <- [$wideop__(nt, wideop_nt, c_1, c_2, c_3, c_4)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec + rule extwideop{nt : numtype, c_1 : num_(nt), c_2 : num_(nt), extwideop_nt : extwideop_(nt), c_5 : num_(nt), c_6 : num_(nt)}: + `%~>%`([CONST_instr(nt, c_1) CONST_instr(nt, c_2) EXTWIDEOP_instr(nt, extwideop_nt)], [CONST_instr(nt, c_5) CONST_instr(nt, c_6)]) + -- if (|[$extwideop__(nt, extwideop_nt, c_1, c_2)]| > 0) + -- if ((c_5, c_6) <- [$extwideop__(nt, extwideop_nt, c_1, c_2)]) + + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvunop{c_1 : vec_(V128_Vnn), vvunop : vvunop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVUNOP_instr(V128_vectype, vvunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvunop_(V128_vectype, vvunop, c_1)| > 0) -- if (c <- $vvunop_(V128_vectype, vvunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), vvbinop : vvbinop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VVBINOP_instr(V128_vectype, vvbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvbinop_(V128_vectype, vvbinop, c_1, c_2)| > 0) -- if (c <- $vvbinop_(V128_vectype, vvbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), vvternop : vvternop, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VVTERNOP_instr(V128_vectype, vvternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)| > 0) -- if (c <- $vvternop_(V128_vectype, vvternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vvtestop{c_1 : vec_(V128_Vnn), c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop)], [CONST_instr(I32_numtype, c)]) -- if (c = $inez_($vsize(V128_vectype), c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-val`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vunop_(sh, vunop, c_1)| > 0) -- if (c <- $vunop_(sh, vunop, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vunop-trap`{c_1 : vec_(V128_Vnn), sh : shape, vunop : vunop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VUNOP_instr(sh, vunop)], [TRAP_instr]) -- if ($vunop_(sh, vunop, c_1) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vbinop_(sh, vbinop, c_1, c_2)| > 0) -- if (c <- $vbinop_(sh, vbinop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vbinop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vbinop : vbinop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VBINOP_instr(sh, vbinop)], [TRAP_instr]) -- if ($vbinop_(sh, vbinop, c_1, c_2) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-val`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [VCONST_instr(V128_vectype, c)]) -- if (|$vternop_(sh, vternop, c_1, c_2, c_3)| > 0) -- if (c <- $vternop_(sh, vternop, c_1, c_2, c_3)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vternop-trap`{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh : shape, vternop : vternop_(sh)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VTERNOP_instr(sh, vternop)], [TRAP_instr]) -- if ($vternop_(sh, vternop, c_1, c_2, c_3) = []) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vtestop{c_1 : vec_(V128_Vnn), Jnn : Jnn, M : M, c : num_(I32_numtype), `i*` : lane_($lanetype(`%X%`_shape((Jnn : Jnn <: lanetype), M)))*}: `%~>%`([VCONST_instr(V128_vectype, c_1) VTESTOP_instr(`%X%`_shape((Jnn : Jnn <: lanetype), M), ALL_TRUE_vtestop_)], [CONST_instr(I32_numtype, c)]) -- if (i*{i <- `i*`} = $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)) -- if (c!`%`_num_.0 = $prod($inez_($jsizenn(Jnn), i)!`%`_u32.0*{i <- `i*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vrelop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : shape, vrelop : vrelop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VRELOP_instr(sh, vrelop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vrelop_(sh, vrelop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshiftop{c_1 : vec_(V128_Vnn), i : num_(I32_numtype), sh : ishape, vshiftop : vshiftop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr(I32_numtype, i) VSHIFTOP_instr(sh, vshiftop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshiftop_(sh, vshiftop, c_1, i)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vbitmask{c_1 : vec_(V128_Vnn), sh : ishape, c : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VBITMASK_instr(sh)], [CONST_instr(I32_numtype, c)]) -- if (c = $vbitmaskop_(sh, c_1)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vswizzlop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, swizzlop : vswizzlop_(sh), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSWIZZLOP_instr(sh, swizzlop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vswizzlop_(sh, swizzlop, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vshuffle{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh : bshape, `i*` : laneidx*, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VSHUFFLE_instr(sh, i*{i <- `i*`})], [VCONST_instr(V128_vectype, c)]) -- if (c = $vshufflop_(sh, i*{i <- `i*`}, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vsplat{Lnn : Lnn, c_1 : num_($lunpack(Lnn)), M : M, c : vec_(V128_Vnn)}: `%~>%`([CONST_instr($lunpack(Lnn), c_1) VSPLAT_instr(`%X%`_shape(Lnn, M))], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lpacknum_(Lnn, c_1)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-num`{c_1 : vec_(V128_Vnn), nt : numtype, M : M, i : laneidx, c_2 : num_(nt)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((nt : numtype <: lanetype), M), ?(), i)], [CONST_instr(nt, c_2)]) -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)|) -- if (c_2 = $lanes_(`%X%`_shape((nt : numtype <: lanetype), M), c_1)[i!`%`_laneidx.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vextract_lane-pack`{c_1 : vec_(V128_Vnn), pt : packtype, M : M, sx : sx, i : laneidx, c_2 : num_(I32_numtype)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTRACT_LANE_instr(`%X%`_shape((pt : packtype <: lanetype), M), ?(sx), i)], [CONST_instr(I32_numtype, c_2)]) -- if (i!`%`_laneidx.0 < |$lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)|) -- if (c_2 = $extend__($psize(pt), 32, sx, $lanes_(`%X%`_shape((pt : packtype <: lanetype), M), c_1)[i!`%`_laneidx.0])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vreplace_lane{c_1 : vec_(V128_Vnn), Lnn : Lnn, c_2 : num_($lunpack(Lnn)), M : M, i : laneidx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) CONST_instr($lunpack(Lnn), c_2) VREPLACE_LANE_instr(`%X%`_shape(Lnn, M), i)], [VCONST_instr(V128_vectype, c)]) -- if (c = $inv_lanes_(`%X%`_shape(Lnn, M), $lanes_(`%X%`_shape(Lnn, M), c_1)[[i!`%`_laneidx.0] = $lpacknum_(Lnn, c_2)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextunop{c_1 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextunop : vextunop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VEXTUNOP_instr(sh_2, sh_1, vextunop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextunop__(sh_1, sh_2, vextunop, c_1) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextbinop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextbinop : vextbinop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VEXTBINOP_instr(sh_2, sh_1, vextbinop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextbinop__(sh_1, sh_2, vextbinop, c_1, c_2) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vextternop{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), c_3 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, vextternop : vextternop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VCONST_instr(V128_vectype, c_3) VEXTTERNOP_instr(sh_2, sh_1, vextternop)], [VCONST_instr(V128_vectype, c)]) -- if ($vextternop__(sh_1, sh_2, vextternop, c_1, c_2, c_3) = c) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vnarrow{c_1 : vec_(V128_Vnn), c_2 : vec_(V128_Vnn), sh_2 : ishape, sh_1 : ishape, sx : sx, c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCONST_instr(V128_vectype, c_2) VNARROW_instr(sh_2, sh_1, sx)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vnarrowop__(sh_1!`%`_ishape.0, sh_2!`%`_ishape.0, sx, c_1, c_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule vcvtop{c_1 : vec_(V128_Vnn), sh_2 : shape, sh_1 : shape, vcvtop : vcvtop__(sh_1, sh_2), c : vec_(V128_Vnn)}: `%~>%`([VCONST_instr(V128_vectype, c_1) VCVTOP_instr(sh_2, sh_1, vcvtop)], [VCONST_instr(V128_vectype, c)]) -- if (c = $vcvtop__(sh_1, sh_2, vcvtop, c_1)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_(state : state, blocktype : blocktype) : instrtype - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, x : idx, `t_1*` : valtype*, `t_2*` : valtype*}(z, _IDX_blocktype(x)) = `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},)) -- Expand: `%~~%`($type(z, x), `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec def $blocktype_{z : state, `t?` : valtype?}(z, _RESULT_blocktype(t?{t <- `t?`})) = `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(lift(t?{t <- `t?`}),)) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Step_read: `%~>%`(config, instr*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule block{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [BLOCK_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule loop{z : state, m : m, `val*` : val*, bt : blocktype, `instr*` : instr*, `t_1*` : valtype*, n : n, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [LOOP_instr(bt, instr*{instr <- `instr*`})]), [`LABEL_%{%}%`_instr(m, [LOOP_instr(bt, instr*{instr <- `instr*`})], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-succeed`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `br_on_cast_fail-fail`{s : store, f : frame, ref : ref, l : labelidx, rt_1 : reftype, rt_2 : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) BR_ON_CAST_FAIL_instr(l, rt_1, rt_2)]), [(ref : ref <: instr) BR_instr(l)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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)]) -- if (a < |$funcinst(z)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule return_call{z : state, x : idx, a : addr}: `%~>%`(`%;%`_config(z, [RETURN_CALL_instr(x)]), [`REF.FUNC_ADDR`_instr(a) RETURN_CALL_REF_instr($funcinst(z)[a].TYPE_funcinst : deftype <: typeuse)]) -- if (a < |$funcinst(z)|) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) -- if ($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0] = a) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-label`{z : state, k : n, `instr'*` : instr*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(k, instr'*{instr' <- `instr'*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-handler`{z : state, k : n, `catch*` : catch*, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(k, catch*{catch <- `catch*`}, (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)*{val <- `val*`} ++ [RETURN_CALL_REF_instr(yy)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-null`{z : state, k : n, f : frame, `val*` : val*, yy : typeuse, `instr*` : instr*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val : val <: instr)*{val <- `val*`} ++ [`REF.NULL_ADDR`_instr] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `return_call_ref-frame-addr`{z : state, k : n, f : frame, `val'*` : val*, n : n, `val*` : val*, a : addr, yy : typeuse, `instr*` : instr*, `t_1*` : valtype*, m : m, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(k, f, (val' : val <: instr)*{val' <- `val'*`} ++ (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a)] ++ [RETURN_CALL_REF_instr(yy)] ++ instr*{instr <- `instr*`})]), (val : val <: instr)^n{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)]) -- if (a < |$funcinst(z)|) -- Expand: `%~~%`($funcinst(z)[a].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1^n{t_1 <- `t_1*`},), `%`_resulttype(t_2^m{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr THROW_REF_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-instrs`{z : state, `val*` : val*, a : addr, `instr*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a)] ++ [THROW_REF_instr] ++ instr*{instr <- `instr*`}), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) -- if ((val*{val <- `val*`} =/= []) \/ (instr*{instr <- `instr*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-label`{z : state, n : n, `instr'*` : instr*, a : addr}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-frame`{z : state, n : n, f : frame, a : addr}: `%~>%`(`%;%`_config(z, [`FRAME_%{%}%`_instr(n, f, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-empty`{z : state, n : n, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [], [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) THROW_REF_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [BR_instr(l)]) -- if (a < |$exninst(z)|) @@ -30477,7 +30688,7 @@ relation Step_read: `%~>%`(config, instr*) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_ref`{z : state, n : n, x : idx, l : labelidx, `catch'*` : catch*, a : addr, `val*` : val*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_REF_catch(x, l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), (val : val <: instr)*{val <- `val*`} ++ [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) -- if (a < |$exninst(z)|) @@ -30485,152 +30696,152 @@ relation Step_read: `%~>%`(config, instr*) -- if ($exninst(z)[a].TAG_exninst = $tagaddr(z)[x!`%`_idx.0]) -- if (val*{val <- `val*`} = $exninst(z)[a].FIELDS_exninst) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-catch_all_ref`{z : state, n : n, l : labelidx, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [CATCH_ALL_REF_catch(l)] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`REF.EXN_ADDR`_instr(a) BR_instr(l)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `throw_ref-handler-next`{z : state, n : n, catch : catch, `catch'*` : catch*, a : addr}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, [catch] ++ catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]), [`HANDLER_%{%}%`_instr(n, catch'*{catch' <- `catch'*`}, [`REF.EXN_ADDR`_instr(a) THROW_REF_instr])]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule try_table{z : state, m : m, `val*` : val*, bt : blocktype, `catch*` : catch*, `instr*` : instr*, n : n, `t_1*` : valtype*, `t_2*` : valtype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^m{val <- `val*`} ++ [TRY_TABLE_instr(bt, `%`_list(catch*{catch <- `catch*`},), instr*{instr <- `instr*`})]), [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, [`LABEL_%{%}%`_instr(n, [], (val : val <: instr)^m{val <- `val*`} ++ instr*{instr <- `instr*`})])]) -- if ($blocktype_(z, bt) = `%->_%%`_instrtype(`%`_resulttype(t_1^m{t_1 <- `t_1*`},), [], `%`_resulttype(t_2^n{t_2 <- `t_2*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `local.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`LOCAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($local(z, x) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `global.get`{z : state, x : idx, val : val}: `%~>%`(`%;%`_config(z, [`GLOBAL.GET`_instr(x)]), [(val : val <: instr)]) -- if ($global(z, x).VALUE_globalinst = val) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [TRAP_instr]) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.get-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) `TABLE.GET`_instr(x)]), [($table(z, x).REFS_tableinst[i!`%`_num_.0] : ref <: instr)]) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.size`{z : state, x : idx, at : addrtype, n : n, lim : limits, rt : reftype}: `%~>%`(`%;%`_config(z, [`TABLE.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if (|$table(z, x).REFS_tableinst| = n) -- if ($table(z, x).TYPE_tableinst = `%%%`_tabletype(at, lim, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$table(z, x_1).REFS_tableinst|) \/ ((i_2!`%`_num_.0 + n) > |$table(z, x_2).REFS_tableinst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `TABLE.COPY`_instr(x, y)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.GET`_instr(y) `TABLE.SET`_instr(x) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.COPY`_instr(x, y)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$table(z, x).REFS_tableinst|) \/ ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `table.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) ($elem(z, y).REFS_eleminst[j!`%`_num_.0] : ref <: instr) `TABLE.SET`_instr(x) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `TABLE.INIT`_instr(x, y)]) -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, x : idx, ao : memarg, c : num_(nt)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr(nt, ?(), x, ao)]), [CONST_instr(nt, c)]) -- if ($nbytes_(nt, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `load-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), Inn : Inn, n : n, sx : sx, x : idx, ao : memarg, c : iN(n)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) LOAD_instr((Inn : Inn <: numtype), ?(`%_%`_loadop_(`%`_sz(n,), sx)), x, ao)]), [CONST_instr((Inn : Inn <: numtype), $extend__(n, $size((Inn : Inn <: numtype)), sx, c))]) -- if ($ibytes_(n, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((n : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), x : idx, ao : memarg, c : vec_(V128_Vnn)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($vbytes_(V128_vectype, c) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((K * M!`%`_M.0) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-pack-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), K : K, M : M, sx : sx, x : idx, ao : memarg, c : vec_(V128_Vnn), `j*` : iN(K)*, Jnn : Jnn}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(K,), M, sx)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- (if ($ibytes_(K, j) = $mem(z, x).BYTES_meminst[((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((((k * K) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) : (((K : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]))^(k%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-splat-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(N,))), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -30638,23 +30849,23 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = ((128 : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), `%`_lane_(j!`%`_iN.0,)^M!`%`_M.0{})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload-zero-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), N : N, x : idx, ao : memarg, c : vec_(V128_Vnn), j : iN(N)}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(N,),)), x, ao)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, j) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -- if (c = $extend__(N, 128, U_sx, j)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `vload_lane-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c_1 : vec_(V128_Vnn), N : N, x : idx, ao : memarg, j : laneidx, c : vec_(V128_Vnn), k : iN(N), Jnn : Jnn, M : M}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c_1) VLOAD_LANE_instr(V128_vectype, `%`_sz(N,), x, ao, j)]), [VCONST_instr(V128_vectype, c)]) -- if ($ibytes_(N, k) = $mem(z, x).BYTES_meminst[(i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) : (((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) @@ -30662,108 +30873,108 @@ relation Step_read: `%~>%`(config, instr*) -- if ((M!`%`_M.0 : nat <:> rat) = (($vsize(V128_vectype) : nat <:> rat) / (N : nat <:> rat))) -- if (c = $inv_lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), $lanes_(`%X%`_shape((Jnn : Jnn <: lanetype), M), c_1)[[j!`%`_laneidx.0] = `%`_lane_(k!`%`_iN.0,)])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.size`{z : state, x : idx, at : addrtype, n : n, lim : limits}: `%~>%`(`%;%`_config(z, [`MEMORY.SIZE`_instr(x)]), [CONST_instr((at : addrtype <: numtype), `%`_num_(n,))]) -- if ((n * (64 * $Ki)) = |$mem(z, x).BYTES_meminst|) -- if ($mem(z, x).TYPE_meminst = `%%PAGE`_memtype(at, lim)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.fill-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.FILL`_instr(x)]), [CONST_instr((at : addrtype <: numtype), i) (val : val <: instr) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-oob`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (((i_1!`%`_num_.0 + n) > |$mem(z, x_1).BYTES_meminst|) \/ ((i_2!`%`_num_.0 + n) > |$mem(z, x_2).BYTES_meminst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-zero`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-le`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), `%`_num_((i_1!`%`_num_.0 + 1),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise -- if (i_1!`%`_num_.0 <= i_2!`%`_num_.0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.copy-gt`{z : state, at_1 : addrtype, i_1 : num_((at_1 : addrtype <: numtype)), at_2 : addrtype, i_2 : num_((at_2 : addrtype <: numtype)), at' : addrtype, n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_(n,)) `MEMORY.COPY`_instr(x_1, x_2)]), [CONST_instr((at_1 : addrtype <: numtype), `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) CONST_instr((at_2 : addrtype <: numtype), `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x_2, $memarg0) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x_1, $memarg0) CONST_instr((at_1 : addrtype <: numtype), i_1) CONST_instr((at_2 : addrtype <: numtype), i_2) CONST_instr((at' : addrtype <: numtype), `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.COPY`_instr(x_1, x_2)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [TRAP_instr]) -- if (((i!`%`_num_.0 + n) > |$mem(z, x).BYTES_meminst|) \/ ((j!`%`_num_.0 + n) > |$data(z, y).BYTES_datainst|)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-zero`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `memory.init-succ`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(x, y)]), [CONST_instr((at : addrtype <: numtype), i) CONST_instr(I32_numtype, `%`_num_($data(z, y).BYTES_datainst[j!`%`_num_.0]!`%`_byte.0,)) STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, $memarg0) CONST_instr((at : addrtype <: numtype), `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `MEMORY.INIT`_instr(x, y)]) -- if (j!`%`_num_.0 < |$data(z, y).BYTES_datainst|) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.null`{z : state, ht : heaptype}: `%~>%`(`%;%`_config(z, [`REF.NULL`_instr(ht)]), [`REF.NULL_ADDR`_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.func`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`REF.FUNC`_instr(x)]), [`REF.FUNC_ADDR`_instr($moduleinst(z).FUNCS_moduleinst[x!`%`_idx.0])]) -- if (x!`%`_idx.0 < |$moduleinst(z).FUNCS_moduleinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-true`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(1,))]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.test-false`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.TEST`_instr(rt)]), [CONST_instr(I32_numtype, `%`_num_(0,))]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-succeed`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [(ref : ref <: instr)]) -- Ref_ok: `%|-%:%`(s, ref, $inst_reftype(f.MODULE_frame, rt)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `ref.cast-fail`{s : store, f : frame, ref : ref, rt : reftype}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [(ref : ref <: instr) `REF.CAST`_instr(rt)]), [TRAP_instr]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.new_default`{z : state, x : idx, `val*` : val*, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, [`STRUCT.NEW_DEFAULT`_instr(x)]), (val : val <: instr)*{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (|`val*`| = |`zt*`|) -- (if ($default_($unpack(zt)) = ?(val)))*{val <- `val*`, zt <- `zt*`} - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../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]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `struct.get-struct`{z : state, a : addr, `sx?` : sx?, x : idx, i : fieldidx, `zt*` : storagetype*, `mut?*` : mut?*}: `%~>%`(`%;%`_config(z, [`REF.STRUCT_ADDR`_instr(a) `STRUCT.GET`_instr(sx?{sx <- `sx?`}, x, i)]), [($unpackfield_(zt*{zt <- `zt*`}[i!`%`_fieldidx.0], sx?{sx <- `sx?`}, $structinst(z)[a].FIELDS_structinst[i!`%`_fieldidx.0]) : val <: instr)]) -- if (i!`%`_fieldidx.0 < |zt*{zt <- `zt*`}|) @@ -30771,173 +30982,173 @@ relation Step_read: `%~>%`(config, instr*) -- if (a < |$structinst(z)|) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_default`{z : state, n : n, x : idx, val : val, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DEFAULT`_instr(x)]), (val : val <: instr)^n{} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($default_($unpack(zt)) = ?(val)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((i!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_elem-alloc`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `ref*` : ref*}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_ELEM`_instr(x, y)]), (ref : ref <: instr)^n{ref <- `ref*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- if (ref^n{ref <- `ref*`} = $elem(z, y).REFS_eleminst[i!`%`_num_.0 : n]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-oob`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((i!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.new_data-num`{z : state, i : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, `c*` : lit_(zt)*, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.NEW_DATA`_instr(x, y)]), $const(!($cunpack(zt)), $cunpacknum_(zt, c))^n{c <- `c*`} ++ [`ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,))]) -- (if ($cunpack(zt) =/= ?()))^n{} -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($concatn_(syntax byte, $zbytes_(zt, c)^n{c <- `c*`}, ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) = $data(z, y).BYTES_datainst[i!`%`_num_.0 : ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-null`{z : state, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-oob`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [TRAP_instr]) -- if (a < |$arrayinst(z)|) -- if (i!`%`_num_.0 >= |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.get-array`{z : state, a : addr, i : num_(I32_numtype), `sx?` : sx?, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x)]), [($unpackfield_(zt, sx?{sx <- `sx?`}, $arrayinst(z)[a].FIELDS_arrayinst[i!`%`_num_.0]) : val <: instr)]) -- if (i!`%`_num_.0 < |$arrayinst(z)[a].FIELDS_arrayinst|) -- if (a < |$arrayinst(z)|) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-null`{z : state}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr `ARRAY.LEN`_instr]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.len-array`{z : state, a : addr}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) `ARRAY.LEN`_instr]), [CONST_instr(I32_numtype, `%`_num_(|$arrayinst(z)[a].FIELDS_arrayinst|,))]) -- if (a < |$arrayinst(z)|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-null`{z : state, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-oob`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [TRAP_instr]) -- if (a < |$arrayinst(z)|) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-zero`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.fill-succ`{z : state, a : addr, i : num_(I32_numtype), val : val, n : n, x : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.FILL`_instr(x)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) (val : val <: instr) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.FILL`_instr(x)]) -- otherwise - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null1`{z : state, i_1 : num_(I32_numtype), ref : ref, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_1) (ref : ref <: instr) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-null2`{z : state, ref : ref, i_1 : num_(I32_numtype), i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr(I32_numtype, i_1) `REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob1`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (a_1 < |$arrayinst(z)|) -- if ((i_1!`%`_num_.0 + n) > |$arrayinst(z)[a_1].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-oob2`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [TRAP_instr]) -- if (a_2 < |$arrayinst(z)|) -- if ((i_2!`%`_num_.0 + n) > |$arrayinst(z)[a_2].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-zero`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-le`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_((i_1!`%`_num_.0 + 1),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_((i_2!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if ((i_1!`%`_num_.0 <= i_2!`%`_num_.0) /\ (sx?{sx <- `sx?`} = $sx(zt_2))) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.copy-gt`{z : state, a_1 : addr, i_1 : num_(I32_numtype), a_2 : addr, i_2 : num_(I32_numtype), n : n, x_1 : idx, x_2 : idx, `sx?` : sx?, `mut?` : mut?, zt_2 : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.COPY`_instr(x_1, x_2)]), [`REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, `%`_num_(((((i_1!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, `%`_num_(((((i_2!`%`_num_.0 + n) : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.GET`_instr(sx?{sx <- `sx?`}, x_2) `ARRAY.SET`_instr(x_1) `REF.ARRAY_ADDR`_instr(a_1) CONST_instr(I32_numtype, i_1) `REF.ARRAY_ADDR`_instr(a_2) CONST_instr(I32_numtype, i_2) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.COPY`_instr(x_1, x_2)]) -- otherwise -- Expand: `%~~%`($type(z, x_2), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt_2))) -- if (sx?{sx <- `sx?`} = $sx(zt_2)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if (a < |$arrayinst(z)|) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [TRAP_instr]) -- if ((j!`%`_num_.0 + n) > |$elem(z, y).REFS_eleminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_elem-succ`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, ref : ref}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_ELEM`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (ref : ref <: instr) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_ELEM`_instr(x, y)]) -- otherwise -- if (j!`%`_num_.0 < |$elem(z, y).REFS_eleminst|) -- if (ref = $elem(z, y).REFS_eleminst[j!`%`_num_.0]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-null`{z : state, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.NULL_ADDR`_instr CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob1`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- if (a < |$arrayinst(z)|) -- if ((i!`%`_num_.0 + n) > |$arrayinst(z)[a].FIELDS_arrayinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-oob2`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, `mut?` : mut?, zt : storagetype}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [TRAP_instr]) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ((j!`%`_num_.0 + ((((n * $zsize(zt)) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$data(z, y).BYTES_datainst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-zero`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), []) -- otherwise -- if (n = 0) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule `array.init_data-num`{z : state, a : addr, i : num_(I32_numtype), j : num_(I32_numtype), n : n, x : idx, y : idx, zt : storagetype, c : lit_(zt), `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) CONST_instr(I32_numtype, j) CONST_instr(I32_numtype, `%`_num_(n,)) `ARRAY.INIT_DATA`_instr(x, y)]), [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) $const(!($cunpack(zt)), $cunpacknum_(zt, c)) `ARRAY.SET`_instr(x) `REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, `%`_num_((i!`%`_num_.0 + 1),)) CONST_instr(I32_numtype, `%`_num_((j!`%`_num_.0 + ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)),)) CONST_instr(I32_numtype, `%`_num_((((n : nat <:> int) - (1 : nat <:> int)) : int <:> nat),)) `ARRAY.INIT_DATA`_instr(x, y)]) -- if ($cunpack(zt) =/= ?()) @@ -30945,47 +31156,47 @@ relation Step_read: `%~>%`(config, instr*) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if ($zbytes_(zt, c) = $data(z, y).BYTES_datainst[j!`%`_num_.0 : ((($zsize(zt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)]) -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:5.1-5.88 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:5.1-5.88 relation Step: `%~>%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:13.1-15.34 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:13.1-15.34 rule pure{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_pure: `%~>%`(instr*{instr <- `instr*`}, instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:17.1-19.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:17.1-19.37 rule read{z : state, `instr*` : instr*, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr'*{instr' <- `instr'*`})) -- Step_read: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), instr'*{instr' <- `instr'*`}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:32.1-35.41 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:32.1-35.41 rule `ctxt-instrs`{z : state, `val*` : val*, `instr*` : instr*, `instr_1*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, (val : val <: instr)*{val <- `val*`} ++ instr*{instr <- `instr*`} ++ instr_1*{instr_1 <- `instr_1*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`} ++ instr'*{instr' <- `instr'*`} ++ instr_1*{instr_1 <- `instr_1*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- if ((val*{val <- `val*`} =/= []) \/ (instr_1*{instr_1 <- `instr_1*`} =/= [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:37.1-39.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:37.1-39.36 rule `ctxt-label`{z : state, n : n, `instr_0*` : instr*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`LABEL_%{%}%`_instr(n, instr_0*{instr_0 <- `instr_0*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:41.1-43.36 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:41.1-43.36 rule `ctxt-handler`{z : state, n : n, `catch*` : catch*, `instr*` : instr*, z' : state, `instr'*` : instr*}: `%~>%`(`%;%`_config(z, [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`})]), `%;%`_config(z', [`HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:45.1-47.45 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:45.1-47.45 rule `ctxt-frame`{s : store, f : frame, n : n, f' : frame, `instr*` : instr*, s' : store, f'' : frame, `instr'*` : instr*}: `%~>%`(`%;%`_config(`%;%`_state(s, f), [`FRAME_%{%}%`_instr(n, f', instr*{instr <- `instr*`})]), `%;%`_config(`%;%`_state(s', f), [`FRAME_%{%}%`_instr(n, f'', instr'*{instr' <- `instr'*`})])) -- Step: `%~>%`(`%;%`_config(`%;%`_state(s, f'), instr*{instr <- `instr*`}), `%;%`_config(`%;%`_state(s', f''), instr'*{instr' <- `instr'*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:173.1-174.48 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:173.1-174.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-3.0/4.3-execution.instructions.spectec:176.1-182.61 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:176.1-182.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)|) @@ -30994,7 +31205,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-3.0/4.3-execution.instructions.spectec:184.1-190.59 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:184.1-190.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))|) @@ -31004,7 +31215,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-3.0/4.3-execution.instructions.spectec:192.1-198.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:192.1-198.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), [`REF.FUNC_ADDR`_instr(a) CALL_REF_instr(yy)])) -- if (a < |$funcinst(`%;%`_state(s, f))|) @@ -31014,7 +31225,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-3.0/4.3-execution.instructions.spectec:242.1-246.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:242.1-246.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([],))) @@ -31022,74 +31233,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-3.0/4.3-execution.instructions.spectec:320.1-321.56 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:320.1-321.56 rule `local.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `LOCAL.SET`_instr(x)]), `%;%`_config($with_local(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:333.1-334.58 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:333.1-334.58 rule `global.set`{z : state, val : val, x : idx}: `%~>%`(`%;%`_config(z, [(val : val <: instr) `GLOBAL.SET`_instr(x)]), `%;%`_config($with_global(z, x, val), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:347.1-349.33 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:347.1-349.33 rule `table.set-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config(z, [TRAP_instr])) -- if (i!`%`_num_.0 >= |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:351.1-353.32 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:351.1-353.32 rule `table.set-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), ref : ref, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) (ref : ref <: instr) `TABLE.SET`_instr(x)]), `%;%`_config($with_table(z, x, i!`%`_num_.0, ref), [])) -- if (i!`%`_num_.0 < |$table(z, x).REFS_tableinst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:362.1-365.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:362.1-365.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-3.0/4.3-execution.instructions.spectec:367.1-368.87 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:367.1-368.87 rule `table.grow-fail`{z : state, ref : ref, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [(ref : ref <: instr) CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `TABLE.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:428.1-429.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:428.1-429.51 rule `elem.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`ELEM.DROP`_instr(x)]), `%;%`_config($with_elem(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:512.1-515.60 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:512.1-515.60 rule `store-num-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:517.1-521.29 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:517.1-521.29 rule `store-num-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), nt : numtype, c : num_(nt), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) CONST_instr(nt, c) STORE_instr(nt, ?(), x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($size(nt) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $nbytes_(nt, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:523.1-526.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:523.1-526.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-3.0/4.3-execution.instructions.spectec:528.1-532.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:528.1-532.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-3.0/4.3-execution.instructions.spectec:534.1-537.63 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:534.1-537.63 rule `vstore-oob`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config(z, [TRAP_instr])) -- if (((i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0) + ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat)) > |$mem(z, x).BYTES_meminst|) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:539.1-542.31 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:539.1-542.31 rule `vstore-val`{z : state, at : addrtype, i : num_((at : addrtype <: numtype)), c : vec_(V128_Vnn), x : idx, ao : memarg, `b*` : byte*}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), i) VCONST_instr(V128_vectype, c) VSTORE_instr(V128_vectype, x, ao)]), `%;%`_config($with_mem(z, x, (i!`%`_num_.0 + ao.OFFSET_memarg!`%`_u64.0), ((($vsize(V128_vectype) : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat), b*{b <- `b*`}), [])) -- if (b*{b <- `b*`} = $vbytes_(V128_vectype, c)) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:545.1-548.52 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:545.1-548.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-3.0/4.3-execution.instructions.spectec:550.1-555.49 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:550.1-555.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)) @@ -31097,90 +31308,90 @@ 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-3.0/4.3-execution.instructions.spectec:564.1-567.37 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:564.1-567.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-3.0/4.3-execution.instructions.spectec:569.1-570.84 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:569.1-570.84 rule `memory.grow-fail`{z : state, at : addrtype, n : n, x : idx}: `%~>%`(`%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_(n,)) `MEMORY.GROW`_instr(x)]), `%;%`_config(z, [CONST_instr((at : addrtype <: numtype), `%`_num_($inv_signed_($size((at : addrtype <: numtype)), - (1 : nat <:> int)),))])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:630.1-631.51 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:630.1-631.51 rule `data.drop`{z : state, x : idx}: `%~>%`(`%;%`_config(z, [`DATA.DROP`_instr(x)]), `%;%`_config($with_data(z, x, []), [])) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:707.1-711.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:707.1-711.65 rule `struct.new`{z : state, n : n, `val*` : val*, x : idx, si : structinst, a : addr, `mut?*` : mut?*, `zt*` : storagetype*}: `%~>%`(`%;%`_config(z, (val : val <: instr)^n{val <- `val*`} ++ [`STRUCT.NEW`_instr(x)]), `%;%`_config($add_structinst(z, [si]), [`REF.STRUCT_ADDR`_instr(a)])) -- Expand: `%~~%`($type(z, x), STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)^n{`mut?` <- `mut?*`, zt <- `zt*`},))) -- if (a = |$structinst(z)|) -- if (si = {TYPE $type(z, x), FIELDS $packfield_(zt, val)^n{val <- `val*`, zt <- `zt*`}}) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:728.1-729.55 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:728.1-729.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-3.0/4.3-execution.instructions.spectec:731.1-734.46 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:731.1-734.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-3.0/4.3-execution.instructions.spectec:747.1-752.65 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:747.1-752.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-3.0/4.3-execution.instructions.spectec:792.1-793.66 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:792.1-793.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-3.0/4.3-execution.instructions.spectec:795.1-797.39 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:795.1-797.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-3.0/4.3-execution.instructions.spectec:799.1-802.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:799.1-802.44 rule `array.set-array`{z : state, a : addr, i : num_(I32_numtype), val : val, x : idx, zt : storagetype, `mut?` : mut?}: `%~>%`(`%;%`_config(z, [`REF.ARRAY_ADDR`_instr(a) CONST_instr(I32_numtype, i) (val : val <: instr) `ARRAY.SET`_instr(x)]), `%;%`_config($with_array(z, a, i!`%`_num_.0, $packfield_(zt, val)), [])) -- Expand: `%~~%`($type(z, x), ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:8.1-8.92 +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:8.1-8.92 relation Steps: `%~>*%`(config, config) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:21.1-22.26 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:21.1-22.26 rule refl{z : state, `instr*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z, instr*{instr <- `instr*`})) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec:24.1-27.44 + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec:24.1-27.44 rule trans{z : state, `instr*` : instr*, z'' : state, `instr''*` : instr*, z' : state, `instr'*` : instr*}: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) -- Step: `%~>%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', instr'*{instr' <- `instr'*`})) -- Steps: `%~>*%`(`%;%`_config(z', instr'*{instr' <- `instr'*`}), `%;%`_config(z'', instr''*{instr'' <- `instr''*`})) } -;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec +;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec relation Eval_expr: `%;%~>*%;%`(state, expr, state, val*) - ;; ../../../../specification/wasm-3.0/4.3-execution.instructions.spectec + ;; ../../../../specification/wasm-latest/4.3-execution.instructions.spectec rule _{z : state, `instr*` : instr*, z' : state, `val*` : val*}: `%;%~>*%;%`(z, instr*{instr <- `instr*`}, z', val*{val <- `val*`}) -- Steps: `%~>*%`(`%;%`_config(z, instr*{instr <- `instr*`}), `%;%`_config(z', (val : val <: instr)*{val <- `val*`})) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:7.1-7.63 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:7.1-7.63 def $alloctypes(type*) : deftype* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:8.1-8.27 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:8.1-8.27 def $alloctypes([]) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:9.1-13.24 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:9.1-13.24 def $alloctypes{`type'*` : type*, type : type, `deftype'*` : deftype*, `deftype*` : deftype*, rectype : rectype, x : idx}(type'*{type' <- `type'*`} ++ [type]) = deftype'*{deftype' <- `deftype'*`} ++ deftype*{deftype <- `deftype*`} -- if (deftype'*{deftype' <- `deftype'*`} = $alloctypes(type'*{type' <- `type'*`})) -- if (type = TYPE_type(rectype)) @@ -31188,160 +31399,160 @@ def $alloctypes(type*) : deftype* -- if (x!`%`_idx.0 = |deftype'*{deftype' <- `deftype'*`}|) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag(store : store, tagtype : tagtype) : (store, tagaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctag{s : store, tagtype : tagtype, taginst : taginst}(s, tagtype) = (s +++ {TAGS [taginst], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TAGS_store|) -- if (taginst = {TYPE tagtype}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:20.1-20.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:20.1-20.102 def $alloctags(store : store, tagtype*) : (store, tagaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:21.1-21.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:21.1-21.34 def $alloctags{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:22.1-24.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:22.1-24.49 def $alloctags{s : store, tagtype : tagtype, `tagtype'*` : tagtype*, s_2 : store, ja : tagaddr, `ja'*` : tagaddr*, s_1 : store}(s, [tagtype] ++ tagtype'*{tagtype' <- `tagtype'*`}) = (s_2, [ja] ++ ja'*{ja' <- `ja'*`}) -- if ((s_1, ja) = $alloctag(s, tagtype)) -- if ((s_2, ja'*{ja' <- `ja'*`}) = $alloctags(s_1, tagtype'*{tagtype' <- `tagtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal(store : store, globaltype : globaltype, val : val) : (store, globaladdr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocglobal{s : store, globaltype : globaltype, val : val, globalinst : globalinst}(s, globaltype, val) = (s +++ {TAGS [], GLOBALS [globalinst], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.GLOBALS_store|) -- if (globalinst = {TYPE globaltype, VALUE val}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:31.1-31.122 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:31.1-31.122 def $allocglobals(store : store, globaltype*, val*) : (store, globaladdr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:32.1-32.42 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:32.1-32.42 def $allocglobals{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:33.1-35.62 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:33.1-35.62 def $allocglobals{s : store, globaltype : globaltype, `globaltype'*` : globaltype*, val : val, `val'*` : val*, s_2 : store, ga : globaladdr, `ga'*` : globaladdr*, s_1 : store}(s, [globaltype] ++ globaltype'*{globaltype' <- `globaltype'*`}, [val] ++ val'*{val' <- `val'*`}) = (s_2, [ga] ++ ga'*{ga' <- `ga'*`}) -- if ((s_1, ga) = $allocglobal(s, globaltype, val)) -- if ((s_2, ga'*{ga' <- `ga'*`}) = $allocglobals(s_1, globaltype'*{globaltype' <- `globaltype'*`}, val'*{val' <- `val'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem(store : store, memtype : memtype) : (store, memaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmem{s : store, at : addrtype, i : u64, `j?` : u64?, meminst : meminst}(s, `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`}))) = (s +++ {TAGS [], GLOBALS [], MEMS [meminst], TABLES [], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.MEMS_store|) -- if (meminst = {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(i, j?{j <- `j?`})), BYTES `%`_byte(0,)^(i!`%`_u64.0 * (64 * $Ki)){}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:42.1-42.102 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:42.1-42.102 def $allocmems(store : store, memtype*) : (store, memaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:43.1-43.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:43.1-43.34 def $allocmems{s : store}(s, []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:44.1-46.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:44.1-46.49 def $allocmems{s : store, memtype : memtype, `memtype'*` : memtype*, s_2 : store, ma : memaddr, `ma'*` : memaddr*, s_1 : store}(s, [memtype] ++ memtype'*{memtype' <- `memtype'*`}) = (s_2, [ma] ++ ma'*{ma' <- `ma'*`}) -- if ((s_1, ma) = $allocmem(s, memtype)) -- if ((s_2, ma'*{ma' <- `ma'*`}) = $allocmems(s_1, memtype'*{memtype' <- `memtype'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable(store : store, tabletype : tabletype, ref : ref) : (store, tableaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $alloctable{s : store, at : addrtype, i : u64, `j?` : u64?, rt : reftype, ref : ref, tableinst : tableinst}(s, `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), ref) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [tableinst], FUNCS [], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.TABLES_store|) -- if (tableinst = {TYPE `%%%`_tabletype(at, `[%..%]`_limits(i, j?{j <- `j?`}), rt), REFS ref^i!`%`_u64.0{}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:53.1-53.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:53.1-53.118 def $alloctables(store : store, tabletype*, ref*) : (store, tableaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:54.1-54.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:54.1-54.41 def $alloctables{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:55.1-57.60 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:55.1-57.60 def $alloctables{s : store, tabletype : tabletype, `tabletype'*` : tabletype*, ref : ref, `ref'*` : ref*, s_2 : store, ta : tableaddr, `ta'*` : tableaddr*, s_1 : store}(s, [tabletype] ++ tabletype'*{tabletype' <- `tabletype'*`}, [ref] ++ ref'*{ref' <- `ref'*`}) = (s_2, [ta] ++ ta'*{ta' <- `ta'*`}) -- if ((s_1, ta) = $alloctable(s, tabletype, ref)) -- if ((s_2, ta'*{ta' <- `ta'*`}) = $alloctables(s_1, tabletype'*{tabletype' <- `tabletype'*`}, ref'*{ref' <- `ref'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc(store : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst) : (store, funcaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocfunc{s : store, deftype : deftype, funccode : funccode, moduleinst : moduleinst, funcinst : funcinst}(s, deftype, funccode, moduleinst) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [funcinst], DATAS [], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.FUNCS_store|) -- if (funcinst = {TYPE deftype, MODULE moduleinst, CODE funccode}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:64.1-64.133 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:64.1-64.133 def $allocfuncs(store : store, deftype*, funccode*, moduleinst*) : (store, funcaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:65.1-65.45 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:65.1-65.45 def $allocfuncs{s : store}(s, [], [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:66.1-68.71 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:66.1-68.71 def $allocfuncs{s : store, dt : deftype, `dt'*` : deftype*, funccode : funccode, `funccode'*` : funccode*, moduleinst : moduleinst, `moduleinst'*` : moduleinst*, s_2 : store, fa : funcaddr, `fa'*` : funcaddr*, s_1 : store}(s, [dt] ++ dt'*{dt' <- `dt'*`}, [funccode] ++ funccode'*{funccode' <- `funccode'*`}, [moduleinst] ++ moduleinst'*{moduleinst' <- `moduleinst'*`}) = (s_2, [fa] ++ fa'*{fa' <- `fa'*`}) -- if ((s_1, fa) = $allocfunc(s, dt, funccode, moduleinst)) -- if ((s_2, fa'*{fa' <- `fa'*`}) = $allocfuncs(s_1, dt'*{dt' <- `dt'*`}, funccode'*{funccode' <- `funccode'*`}, moduleinst'*{moduleinst' <- `moduleinst'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata(store : store, datatype : datatype, byte*) : (store, dataaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocdata{s : store, `byte*` : byte*, datainst : datainst}(s, OK_datatype, byte*{byte <- `byte*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [datainst], ELEMS [], STRUCTS [], ARRAYS [], EXNS []}, |s.DATAS_store|) -- if (datainst = {BYTES byte*{byte <- `byte*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:75.1-75.118 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:75.1-75.118 def $allocdatas(store : store, datatype*, byte**) : (store, dataaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:76.1-76.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:76.1-76.40 def $allocdatas{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:77.1-79.53 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:77.1-79.53 def $allocdatas{s : store, ok : datatype, `ok'*` : datatype*, `b*` : byte*, `b'**` : byte**, s_2 : store, da : dataaddr, `da'*` : dataaddr*, s_1 : store}(s, [ok] ++ ok'*{ok' <- `ok'*`}, [b*{b <- `b*`}] ++ b'*{b' <- `b'*`}*{`b'*` <- `b'**`}) = (s_2, [da] ++ da'*{da' <- `da'*`}) -- if ((s_1, da) = $allocdata(s, ok, b*{b <- `b*`})) -- if ((s_2, da'*{da' <- `da'*`}) = $allocdatas(s_1, ok'*{ok' <- `ok'*`}, b'*{b' <- `b'*`}*{`b'*` <- `b'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem(store : store, elemtype : elemtype, ref*) : (store, elemaddr) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocelem{s : store, elemtype : elemtype, `ref*` : ref*, eleminst : eleminst}(s, elemtype, ref*{ref <- `ref*`}) = (s +++ {TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [eleminst], STRUCTS [], ARRAYS [], EXNS []}, |s.ELEMS_store|) -- if (eleminst = {TYPE elemtype, REFS ref*{ref <- `ref*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:86.1-86.117 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:86.1-86.117 def $allocelems(store : store, elemtype*, ref**) : (store, elemaddr*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:87.1-87.40 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:87.1-87.40 def $allocelems{s : store}(s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:88.1-90.55 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:88.1-90.55 def $allocelems{s : store, rt : reftype, `rt'*` : reftype*, `ref*` : ref*, `ref'**` : ref**, s_2 : store, ea : elemaddr, `ea'*` : elemaddr*, s_1 : store}(s, [rt] ++ rt'*{rt' <- `rt'*`}, [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = (s_2, [ea] ++ ea'*{ea' <- `ea'*`}) -- if ((s_1, ea) = $allocelem(s, rt, ref*{ref <- `ref*`})) -- if ((s_2, ea'*{ea' <- `ea'*`}) = $allocelems(s_1, rt'*{rt' <- `rt'*`}, ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport(moduleinst : moduleinst, export : export) : exportinst - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TAG_externidx(x))) = {NAME name, ADDR TAG_externaddr(moduleinst.TAGS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, GLOBAL_externidx(x))) = {NAME name, ADDR GLOBAL_externaddr(moduleinst.GLOBALS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, MEM_externidx(x))) = {NAME name, ADDR MEM_externaddr(moduleinst.MEMS_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, TABLE_externidx(x))) = {NAME name, ADDR TABLE_externaddr(moduleinst.TABLES_moduleinst[x!`%`_idx.0])} - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexport{moduleinst : moduleinst, name : name, x : idx}(moduleinst, EXPORT_export(name, FUNC_externidx(x))) = {NAME name, ADDR FUNC_externaddr(moduleinst.FUNCS_moduleinst[x!`%`_idx.0])} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports(moduleinst : moduleinst, export*) : exportinst* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocexports{moduleinst : moduleinst, `export*` : export*}(moduleinst, export*{export <- `export*`}) = $allocexport(moduleinst, export)*{export <- `export*`} -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) : (store, moduleinst) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $allocmodule{s : store, module : module, `externaddr*` : externaddr*, `val_G*` : val*, `ref_T*` : ref*, `ref_E**` : ref**, s_7 : store, moduleinst : moduleinst, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `tagtype*` : tagtype*, `expr_G*` : expr*, `globaltype*` : globaltype*, `memtype*` : memtype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `expr_F*` : expr*, `local**` : local**, `x*` : idx*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `elemtype*` : elemtype*, `expr_E**` : expr**, `aa_I*` : tagaddr*, `ga_I*` : globaladdr*, `ma_I*` : memaddr*, `ta_I*` : tableaddr*, `fa_I*` : funcaddr*, `dt*` : deftype*, `fa*` : nat*, s_1 : store, `aa*` : tagaddr*, s_2 : store, `ga*` : globaladdr*, s_3 : store, `ma*` : memaddr*, s_4 : store, `ta*` : tableaddr*, s_5 : store, `da*` : dataaddr*, s_6 : store, `ea*` : elemaddr*, `xi*` : exportinst*}(s, module, externaddr*{externaddr <- `externaddr*`}, val_G*{val_G <- `val_G*`}, ref_T*{ref_T <- `ref_T*`}, ref_E*{ref_E <- `ref_E*`}*{`ref_E*` <- `ref_E**`}) = (s_7, moduleinst) -- if (module = MODULE_module(`%`_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*`},))) -- if (tag*{tag <- `tag*`} = TAG_tag(tagtype)*{tagtype <- `tagtype*`}) @@ -31368,56 +31579,56 @@ def $allocmodule(store : store, module : module, externaddr*, val*, ref*, ref**) -- if (xi*{xi <- `xi*`} = $allocexports({TYPES [], TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS [], ELEMS [], EXPORTS []}, export*{export <- `export*`})) -- if (moduleinst = {TYPES dt*{dt <- `dt*`}, TAGS aa_I*{aa_I <- `aa_I*`} ++ aa*{aa <- `aa*`}, GLOBALS ga_I*{ga_I <- `ga_I*`} ++ ga*{ga <- `ga*`}, MEMS ma_I*{ma_I <- `ma_I*`} ++ ma*{ma <- `ma*`}, TABLES ta_I*{ta_I <- `ta_I*`} ++ ta*{ta <- `ta*`}, FUNCS fa_I*{fa_I <- `fa_I*`} ++ fa*{fa <- `fa*`}, DATAS da*{da <- `da*`}, ELEMS ea*{ea <- `ea*`}, EXPORTS xi*{xi <- `xi*`}}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_(dataidx : dataidx, data : data) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*}(x, DATA_data(b^n{b <- `b*`}, PASSIVE_datamode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $rundata_{x : idx, n : n, `b*` : byte*, y : idx, `instr*` : instr*}(x, DATA_data(b^n{b <- `b*`}, ACTIVE_datamode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `MEMORY.INIT`_instr(y, x) `DATA.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_(elemidx : elemidx, elem : elem) : instr* - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, PASSIVE_elemmode)) = [] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, DECLARE_elemmode)) = [`ELEM.DROP`_instr(x)] - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $runelem_{x : idx, rt : reftype, n : n, `e*` : expr*, y : idx, `instr*` : instr*}(x, ELEM_elem(rt, e^n{e <- `e*`}, ACTIVE_elemmode(y, instr*{instr <- `instr*`}))) = instr*{instr <- `instr*`} ++ [CONST_instr(I32_numtype, `%`_num_(0,)) CONST_instr(I32_numtype, `%`_num_(n,)) `TABLE.INIT`_instr(y, x) `ELEM.DROP`_instr(x)] -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:160.1-160.92 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:160.1-160.92 def $evalexprs(state : state, expr*) : (state, ref*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:161.1-161.34 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:161.1-161.34 def $evalexprs{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:162.1-165.46 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:162.1-165.46 def $evalexprs{z : state, expr : expr, `expr'*` : expr*, z'' : state, ref : ref, `ref'*` : ref*, z' : state}(z, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [ref] ++ ref'*{ref' <- `ref'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [(ref : ref <: val)]) -- if ((z'', ref'*{ref' <- `ref'*`}) = $evalexprs(z', expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:167.1-167.96 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:167.1-167.96 def $evalexprss(state : state, expr**) : (state, ref**) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:168.1-168.35 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:168.1-168.35 def $evalexprss{z : state}(z, []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:169.1-172.49 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:169.1-172.49 def $evalexprss{z : state, `expr*` : expr*, `expr'**` : expr**, z'' : state, `ref*` : ref*, `ref'**` : ref**, z' : state}(z, [expr*{expr <- `expr*`}] ++ expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`}) = (z'', [ref*{ref <- `ref*`}] ++ ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) -- if ((z', ref*{ref <- `ref*`}) = $evalexprs(z, expr*{expr <- `expr*`})) -- if ((z'', ref'*{ref' <- `ref'*`}*{`ref'*` <- `ref'**`}) = $evalexprss(z', expr'*{expr' <- `expr'*`}*{`expr'*` <- `expr'**`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec rec { -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:174.1-174.111 +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:174.1-174.111 def $evalglobals(state : state, globaltype*, expr*) : (state, val*) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:175.1-175.41 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:175.1-175.41 def $evalglobals{z : state}(z, [], []) = (z, []) - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec:176.1-181.82 + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec:176.1-181.82 def $evalglobals{z : state, gt : globaltype, `gt'*` : globaltype*, expr : expr, `expr'*` : expr*, z'' : state, val : val, `val'*` : val*, z' : state, s : store, f : frame, s' : store, a : addr}(z, [gt] ++ gt'*{gt' <- `gt'*`}, [expr] ++ expr'*{expr' <- `expr'*`}) = (z'', [val] ++ val'*{val' <- `val'*`}) -- Eval_expr: `%;%~>*%;%`(z, expr, z', [val]) -- if (z' = `%;%`_state(s, f)) @@ -31425,9 +31636,9 @@ def $evalglobals(state : state, globaltype*, expr*) : (state, val*) -- if ((z'', val'*{val' <- `val'*`}) = $evalglobals(`%;%`_state(s', f[MODULE_frame.GLOBALS_moduleinst =++ [a]]), gt'*{gt' <- `gt'*`}, expr'*{expr' <- `expr'*`})) } -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate(store : store, module : module, externaddr*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $instantiate{s : store, module : module, `externaddr*` : externaddr*, s'''' : store, moduleinst : moduleinst, `instr_E*` : instr*, `instr_D*` : instr*, `instr_S?` : instr?, `xt_I*` : externtype*, `xt_E*` : externtype*, `type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `expr_G*` : expr*, `globaltype*` : globaltype*, `expr_T*` : expr*, `tabletype*` : tabletype*, `byte**` : byte**, `datamode*` : datamode*, `elemmode*` : elemmode*, `expr_E**` : expr**, `reftype*` : reftype*, `x?` : idx?, moduleinst_0 : moduleinst, z : state, z' : state, `val_G*` : val*, z'' : state, `ref_T*` : ref*, z''' : state, `ref_E**` : ref**, s''' : store, f : frame, i_D : nat, i_E : nat}(s, module, externaddr*{externaddr <- `externaddr*`}) = `%;%`_config(`%;%`_state(s'''', {LOCALS [], MODULE moduleinst}), instr_E*{instr_E <- `instr_E*`} ++ instr_D*{instr_D <- `instr_D*`} ++ lift(instr_S?{instr_S <- `instr_S?`})) -- Module_ok: `|-%:%`(module, `%->%`_moduletype(xt_I*{xt_I <- `xt_I*`}, xt_E*{xt_E <- `xt_E*`})) -- (Externaddr_ok: `%|-%:%`(s, externaddr, xt_I))*{externaddr <- `externaddr*`, xt_I <- `xt_I*`} @@ -31448,32 +31659,32 @@ def $instantiate(store : store, module : module, externaddr*) : config -- if (instr_E*{instr_E <- `instr_E*`} = $concat_(syntax instr, $runelem_(`%`_elemidx(i_E,), elem*{elem <- `elem*`}[i_E])^(i_E<|elem*{elem <- `elem*`}|){})) -- if (instr_S?{instr_S <- `instr_S?`} = CALL_instr(x)?{x <- `x?`}) -;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec +;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke(store : store, funcaddr : funcaddr, val*) : config - ;; ../../../../specification/wasm-3.0/4.4-execution.modules.spectec + ;; ../../../../specification/wasm-latest/4.4-execution.modules.spectec def $invoke{s : store, funcaddr : funcaddr, `val*` : val*, `t_1*` : valtype*, `t_2*` : valtype*}(s, funcaddr, val*{val <- `val*`}) = `%;%`_config(`%;%`_state(s, {LOCALS [], MODULE {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], EXPORTS []}}), (val : val <: instr)*{val <- `val*`} ++ [`REF.FUNC_ADDR`_instr(funcaddr) CALL_REF_instr(s.FUNCS_store[funcaddr].TYPE_funcinst : deftype <: typeuse)]) -- Expand: `%~~%`(s.FUNCS_store[funcaddr].TYPE_funcinst, `FUNC%->%`_comptype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- (Val_ok: `%|-%:%`(s, val, t_1))*{t_1 <- `t_1*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax castop = (null?, null?) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec syntax memidxop = (memidx, memarg) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax startopt = start* -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax code = (local*, expr) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec syntax nopt = u32* -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec def $ieee_(N : N, rat : rat) : fNmag(N) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax idctxt = { TYPES name?*, @@ -31490,23 +31701,23 @@ syntax idctxt = TYPEDEFS deftype?* } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec syntax I = idctxt -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:154.1-154.56 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:154.1-154.56 def $concat_idctxt(idctxt*) : idctxt - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:155.1-155.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:155.1-155.29 def $concat_idctxt([]) = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:156.1-156.53 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:156.1-156.53 def $concat_idctxt{I : I, `I'*` : I*}([I] ++ I'*{I' <- `I'*`}) = I +++ $concat_idctxt(I'*{I' <- `I'*`}) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec relation Idctxt_ok: `|-%:OK`(idctxt,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec rule _{I : I, `field**` : char**}: `|-%:OK`(I,) -- if $disjoint_(syntax name, $concatopt_(syntax name, I.TYPES_I)) @@ -31522,10 +31733,10 @@ relation Idctxt_ok: `|-%:OK`(idctxt,) -- (if $disjoint_(syntax name, $concatopt_(syntax name, [?(`%`_name(field*{field <- `field*`},))])))*{`field*` <- `field**`} -- if ([?(`%`_name(field*{field <- `field*`},))*{`field*` <- `field**`}] = I.FIELDS_I) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $dots : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec syntax decl = | TYPE(rectype) | IMPORT(name : name, name : name, externtype : externtype) @@ -31539,171 +31750,171 @@ syntax decl = | START(funcidx) | EXPORT(name : name, externidx : externidx) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:258.1-258.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:258.1-258.76 def $typesd(decl*) : type* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:270.1-270.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:270.1-270.23 def $typesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:271.1-271.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:271.1-271.48 def $typesd{type : type, `decl'*` : decl*}([(type : type <: decl)] ++ decl'*{decl' <- `decl'*`}) = [type] ++ $typesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:272.1-272.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:272.1-272.57 def $typesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $typesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:259.1-259.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:259.1-259.78 def $importsd(decl*) : import* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:274.1-274.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:274.1-274.25 def $importsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:275.1-275.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:275.1-275.56 def $importsd{import : import, `decl'*` : decl*}([(import : import <: decl)] ++ decl'*{decl' <- `decl'*`}) = [import] ++ $importsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:276.1-276.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:276.1-276.61 def $importsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $importsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:260.1-260.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:260.1-260.75 def $tagsd(decl*) : tag* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:278.1-278.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:278.1-278.22 def $tagsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:279.1-279.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:279.1-279.44 def $tagsd{tag : tag, `decl'*` : decl*}([(tag : tag <: decl)] ++ decl'*{decl' <- `decl'*`}) = [tag] ++ $tagsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:280.1-280.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:280.1-280.55 def $tagsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tagsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:261.1-261.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:261.1-261.78 def $globalsd(decl*) : global* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:282.1-282.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:282.1-282.25 def $globalsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:283.1-283.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:283.1-283.56 def $globalsd{global : global, `decl'*` : decl*}([(global : global <: decl)] ++ decl'*{decl' <- `decl'*`}) = [global] ++ $globalsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:284.1-284.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:284.1-284.61 def $globalsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $globalsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:262.1-262.75 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:262.1-262.75 def $memsd(decl*) : mem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:286.1-286.22 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:286.1-286.22 def $memsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:287.1-287.44 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:287.1-287.44 def $memsd{mem : mem, `decl'*` : decl*}([(mem : mem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [mem] ++ $memsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:288.1-288.55 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:288.1-288.55 def $memsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $memsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:263.1-263.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:263.1-263.77 def $tablesd(decl*) : table* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:290.1-290.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:290.1-290.24 def $tablesd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:291.1-291.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:291.1-291.52 def $tablesd{table : table, `decl'*` : decl*}([(table : table <: decl)] ++ decl'*{decl' <- `decl'*`}) = [table] ++ $tablesd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:292.1-292.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:292.1-292.59 def $tablesd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $tablesd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:264.1-264.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:264.1-264.76 def $funcsd(decl*) : func* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:294.1-294.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:294.1-294.23 def $funcsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:295.1-295.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:295.1-295.48 def $funcsd{func : func, `decl'*` : decl*}([(func : func <: decl)] ++ decl'*{decl' <- `decl'*`}) = [func] ++ $funcsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:296.1-296.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:296.1-296.57 def $funcsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $funcsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:265.1-265.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:265.1-265.76 def $datasd(decl*) : data* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:298.1-298.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:298.1-298.23 def $datasd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:299.1-299.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:299.1-299.48 def $datasd{data : data, `decl'*` : decl*}([(data : data <: decl)] ++ decl'*{decl' <- `decl'*`}) = [data] ++ $datasd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:300.1-300.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:300.1-300.57 def $datasd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $datasd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:266.1-266.76 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:266.1-266.76 def $elemsd(decl*) : elem* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:302.1-302.23 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:302.1-302.23 def $elemsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:303.1-303.48 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:303.1-303.48 def $elemsd{elem : elem, `decl'*` : decl*}([(elem : elem <: decl)] ++ decl'*{decl' <- `decl'*`}) = [elem] ++ $elemsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:304.1-304.57 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:304.1-304.57 def $elemsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $elemsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:267.1-267.77 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:267.1-267.77 def $startsd(decl*) : start* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:306.1-306.24 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:306.1-306.24 def $startsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:307.1-307.52 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:307.1-307.52 def $startsd{start : start, `decl'*` : decl*}([(start : start <: decl)] ++ decl'*{decl' <- `decl'*`}) = [start] ++ $startsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:308.1-308.59 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:308.1-308.59 def $startsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $startsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec rec { -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:268.1-268.78 +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:268.1-268.78 def $exportsd(decl*) : export* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:310.1-310.25 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:310.1-310.25 def $exportsd([]) = [] - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:311.1-311.56 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:311.1-311.56 def $exportsd{export : export, `decl'*` : decl*}([(export : export <: decl)] ++ decl'*{decl' <- `decl'*`}) = [export] ++ $exportsd(decl'*{decl' <- `decl'*`}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec:312.1-312.61 + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec:312.1-312.61 def $exportsd{decl : decl, `decl'*` : decl*}([decl] ++ decl'*{decl' <- `decl'*`}) = $exportsd(decl'*{decl' <- `decl'*`}) -- otherwise } -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered(decl*) : bool - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl*` : decl*}(decl*{decl <- `decl*`}) = true -- if ($importsd(decl*{decl <- `decl*`}) = []) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec def $ordered{`decl_1*` : decl*, import : import, `decl_2*` : decl*}(decl_1*{decl_1 <- `decl_1*`} ++ [(import : import <: decl)] ++ decl_2*{decl_2 <- `decl_2*`}) = (((((($importsd(decl_1*{decl_1 <- `decl_1*`}) = []) /\ ($tagsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($globalsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($memsd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($tablesd(decl_1*{decl_1 <- `decl_1*`}) = [])) /\ ($funcsd(decl_1*{decl_1 <- `decl_1*`}) = [])) -;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec +;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) - ;; ../../../../specification/wasm-3.0/7.0-soundness.contexts.spectec + ;; ../../../../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*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `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((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) @@ -31724,42 +31935,42 @@ relation Context_ok: `|-%:OK`(context,) -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Localval_ok: `%|-%:%`(store, val?, localtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule set{s : store, val : val, t : valtype}: `%|-%:%`(s, ?(val), `%%`_localtype(SET_init, t)) -- Val_ok: `%|-%:%`(s, val, t) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule unset{s : store, t : valtype}: `%|-%:%`(s, ?(), `%%`_localtype(UNSET_init, t)) -- Valtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Datainst_ok: `%|-%:%`(store, datainst, datatype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `b*` : byte*}: `%|-%:%`(s, {BYTES b*{b <- `b*`}}, OK_datatype) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Eleminst_ok: `%|-%:%`(store, eleminst, elemtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE rt, REFS ref*{ref <- `ref*`}}, rt) -- Reftype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, rt) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exportinst_ok: `%|-%:OK`(store, exportinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, nm : name, xa : externaddr, xt : externtype}: `%|-%:OK`(s, {NAME nm, ADDR xa}) -- Externaddr_ok: `%|-%:%`(s, xa, xt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Moduleinst_ok: `%|-%:%`(store, moduleinst, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},), 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-3.0/7.1-soundness.configurations.spectec:14.1-17.43 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:14.1-17.43 rule call_ref{s : store, C : context, yy : typeuse, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, CALL_REF_instr(yy), `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`} ++ [REF_valtype(?(NULL_null), (yy : typeuse <: heaptype))],), [], `%`_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-3.0/7.1-soundness.configurations.spectec:20.1-26.42 + ;; ../../../../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*`},))) -- Typeuse_ok: `%|-%:OK`(C, yy) @@ -31819,18 +32030,18 @@ relation Instr_ok2: `%;%|-%:%`(store, 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-3.0/7.1-soundness.configurations.spectec:28.1-30.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:28.1-30.27 rule ref{s : store, C : context, ref : ref, rt : reftype}: `%;%|-%:%`(s, C, (ref : ref <: instr), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([(rt : reftype <: valtype)],))) -- Ref_ok: `%|-%:%`(s, ref, rt) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:32.1-35.68 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:32.1-35.68 rule label{s : store, C : context, n : n, `instr'*` : instr*, `instr*` : instr*, `t*` : valtype*, `t'*` : valtype*, `x'*` : idx*, `x*` : idx*}: `%;%|-%:%`(s, C, `LABEL_%{%}%`_instr(n, instr'*{instr' <- `instr'*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, C, instr'*{instr' <- `instr'*`}, `%->_%%`_instrtype(`%`_resulttype(t'^n{t' <- `t'*`},), x'*{x' <- `x'*`}, `%`_resulttype(t*{t <- `t*`},))) -- Instrs_ok2: `%;%|-%:%`(s, {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [`%`_resulttype(t'^n{t' <- `t'*`},)], RETURN ?(), REFS [], RECS []} +++ C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:37.1-42.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:37.1-42.35 rule frame{s : store, C : context, n : n, f : frame, `instr*` : instr*, `t*` : valtype*, C' : context}: `%;%|-%:%`(s, C, `FRAME_%{%}%`_instr(n, f, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t^n{t <- `t*`},))) -- Frame_ok: `%|-%:%`(s, f, C') @@ -31838,24 +32049,24 @@ relation Instr_ok2: `%;%|-%:%`(store, context, instr, instrtype) -- Expr_ok2: `%;%|-%:%`(s, C', instr*{instr <- `instr*`}, `%`_resulttype(t^n{t <- `t*`},)) -- Resulttype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%`_resulttype(t^n{t <- `t*`},)) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:44.1-47.49 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:44.1-47.49 rule handler{s : store, C : context, n : n, `catch*` : catch*, `instr*` : instr*, `t*` : valtype*, `x*` : idx*}: `%;%|-%:%`(s, C, `HANDLER_%{%}%`_instr(n, catch*{catch <- `catch*`}, instr*{instr <- `instr*`}), `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) -- (Catch_ok: `%|-%:OK`(C, catch))*{catch <- `catch*`} -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), x*{x <- `x*`}, `%`_resulttype(t*{t <- `t*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:49.1-51.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:49.1-51.42 rule trap{s : store, C : context, `t_1*` : valtype*, `t_2*` : valtype*}: `%;%|-%:%`(s, C, TRAP_instr, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Instrtype_ok: `%|-%:OK`(C, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:5.1-6.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:5.1-6.36 relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:54.1-55.27 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:54.1-55.27 rule empty{s : store, C : context}: `%;%|-%:%`(s, C, [], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([],))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:57.1-61.86 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:57.1-61.86 rule seq{s : store, 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*}: `%;%|-%:%`(s, C, [instr_1] ++ instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`} ++ x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) -- Instr_ok2: `%;%|-%:%`(s, C, instr_1, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x_1*{x_1 <- `x_1*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) @@ -31865,62 +32076,62 @@ relation Instrs_ok2: `%;%|-%:%`(store, context, instr*, instrtype) -- (if (C.LOCALS_context[x_1!`%`_idx.0] = `%%`_localtype(init, t)))*{init <- `init*`, t <- `t*`, x_1 <- `x_1*`} -- Instrs_ok2: `%;%|-%:%`(s, $with_locals(C, x_1*{x_1 <- `x_1*`}, `%%`_localtype(SET_init, t)*{t <- `t*`}), instr_2*{instr_2 <- `instr_2*`}, `%->_%%`_instrtype(`%`_resulttype(t_2*{t_2 <- `t_2*`},), x_2*{x_2 <- `x_2*`}, `%`_resulttype(t_3*{t_3 <- `t_3*`},))) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:63.1-67.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:63.1-67.33 rule sub{s : store, C : context, `instr*` : instr*, it' : instrtype, it : instrtype}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it') -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, it) -- Instrtype_sub: `%|-%<:%`(C, it, it') -- Instrtype_ok: `%|-%:OK`(C, it') - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:70.1-73.33 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:70.1-73.33 rule frame{s : store, C : context, `instr*` : instr*, `t*` : valtype*, `t_1*` : valtype*, `x*` : idx*, `t_2*` : valtype*}: `%;%|-%:%`(s, 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_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), x*{x <- `x*`}, `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Resulttype_ok: `%|-%:OK`(C, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:7.1-8.36 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:7.1-8.36 relation Expr_ok2: `%;%|-%:%`(store, context, expr, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:76.1-78.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:76.1-78.44 rule _{s : store, C : context, `instr*` : instr*, `t*` : valtype*}: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -- Instrs_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype(t*{t <- `t*`},))) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Taginst_ok: `%|-%:%`(store, taginst, tagtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, jt : tagtype}: `%|-%:%`(s, {TYPE jt}, jt) -- Tagtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, jt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Globalinst_ok: `%|-%:%`(store, globalinst, globaltype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `mut?` : mut?, t : valtype, val : val}: `%|-%:%`(s, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Globaltype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%`_globaltype(mut?{mut <- `mut?`}, t)) -- Val_ok: `%|-%:%`(s, val, t) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Meminst_ok: `%|-%:%`(store, meminst, memtype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, `b*` : byte*}: `%|-%:%`(s, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- Memtype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}))) -- if (|b*{b <- `b*`}| = (n * (64 * $Ki))) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Tableinst_ok: `%|-%:%`(store, tableinst, tabletype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*}: `%|-%:%`(s, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- Tabletype_ok: `%|-%:OK`({TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt)) -- if (|ref*{ref <- `ref*`}| = n) -- (Ref_ok: `%|-%:%`(s, ref, rt))*{ref <- `ref*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, dt : deftype, moduleinst : moduleinst, func : func, C : context, dt' : 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) @@ -31928,26 +32139,26 @@ relation Funcinst_ok: `%|-%:%`(store, funcinst, deftype) -- Func_ok: `%|-%:%`(C, func, dt') -- Deftype_sub: `%|-%<:%`(C, dt', dt) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Structinst_ok: `%|-%:OK`(store, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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*`},))) -- if (|`fv*`| = |`zt*`|) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`, zt <- `zt*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Arrayinst_ok: `%|-%:OK`(store, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- (Fieldval_ok: `%|-%:%`(s, fv, zt))*{fv <- `fv*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Exninst_ok: `%|-%:OK`(store, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, ta : tagaddr, `val*` : val*, dt : deftype, `t*` : valtype*}: `%|-%:OK`(s, {TAG ta, FIELDS val*{val <- `val*`}}) -- if (ta < |s.TAGS_store|) @@ -31956,18 +32167,18 @@ relation Exninst_ok: `%|-%:OK`(store, exninst) -- if (|`t*`| = |`val*`|) -- (Val_ok: `%|-%:%`(s, val, t))*{t <- `t*`, val <- `val*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rec { -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:226.1-227.50 +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:226.1-227.50 relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:240.1-243.35 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:240.1-243.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-3.0/7.1-soundness.configurations.spectec:245.1-248.20 + ;; ../../../../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}: `%>>_%%`(`REF.STRUCT_ADDR`_fieldval(a), s, s.STRUCTS_store[a].FIELDS_structinst[i]) -- if (i < |s.STRUCTS_store[a].FIELDS_structinst|) @@ -31976,42 +32187,42 @@ relation ImmutReachable: `%>>_%%`(fieldval, store, fieldval) -- if (i < |ft*{ft <- `ft*`}|) -- if (ft*{ft <- `ft*`}[i] = `%%`_fieldtype(?(), zt)) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec:250.1-252.42 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:250.1-252.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-3.0/7.1-soundness.configurations.spectec:254.1-255.44 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:254.1-255.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-3.0/7.1-soundness.configurations.spectec:257.1-258.28 + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec:257.1-258.28 rule `ref.extern`{ref : ref, s : store}: `%>>_%%`(`REF.EXTERN`_fieldval(ref), s, (ref : ref <: fieldval)) } -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable(fieldval : fieldval, store : store, fieldval : fieldval) : bool - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = false -- ImmutReachable: `%>>_%%`(fv_1, s, fv_2) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec def $NotImmutReachable{fv_1 : fieldval, s : store, fv_2 : fieldval}(fv_1, s, fv_2) = true -- otherwise -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation NotImmutReachable: `~%>>_%%`(fieldval, store, fieldval) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{fv_1 : fieldval, s : store, fv_2 : fieldval}: `~%>>_%%`(fv_1, s, fv_2) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Store_ok: `|-%:OK`(store,) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, `taginst*` : taginst*, `tagtype*` : tagtype*, `globalinst*` : globalinst*, `globaltype*` : globaltype*, `meminst*` : meminst*, `memtype*` : memtype*, `tableinst*` : tableinst*, `tabletype*` : tabletype*, `deftype*` : deftype*, `funcinst*` : funcinst*, `datainst*` : datainst*, `datatype*` : datatype*, `eleminst*` : eleminst*, `elemtype*` : elemtype*, `structinst*` : structinst*, `arrayinst*` : arrayinst*, `exninst*` : exninst*}: `|-%:OK`(s,) -- if (|`taginst*`| = |`tagtype*`|) @@ -32036,58 +32247,58 @@ relation Store_ok: `|-%:OK`(store,) -- (NotImmutReachable: `~%>>_%%`(`REF.EXN_ADDR`_fieldval(a), s, `REF.EXN_ADDR`_fieldval(a)))^(a<|exninst*{exninst <- `exninst*`}|){} -- if (s = {TAGS taginst*{taginst <- `taginst*`}, GLOBALS globalinst*{globalinst <- `globalinst*`}, MEMS meminst*{meminst <- `meminst*`}, TABLES tableinst*{tableinst <- `tableinst*`}, FUNCS funcinst*{funcinst <- `funcinst*`}, DATAS datainst*{datainst <- `datainst*`}, ELEMS eleminst*{eleminst <- `eleminst*`}, STRUCTS structinst*{structinst <- `structinst*`}, ARRAYS arrayinst*{arrayinst <- `arrayinst*`}, EXNS exninst*{exninst <- `exninst*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_taginst: `%<=%`(taginst, taginst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{jt : tagtype}: `%<=%`({TYPE jt}, {TYPE jt}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_globalinst: `%<=%`(globalinst, globalinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`mut?` : mut?, t : valtype, val : val, val' : val}: `%<=%`({TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val}, {TYPE `%%`_globaltype(mut?{mut <- `mut?`}, t), VALUE val'}) -- if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (val = val')) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_meminst: `%<=%`(meminst, meminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, `b*` : byte*, n' : n, `b'*` : byte*}: `%<=%`({TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`})), BYTES b*{b <- `b*`}}, {TYPE `%%PAGE`_memtype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`})), BYTES b'*{b' <- `b'*`}}) -- if (n <= n') -- if (|b*{b <- `b*`}| <= |b'*{b' <- `b'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_tableinst: `%<=%`(tableinst, tableinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{at : addrtype, n : n, `m?` : m?, rt : reftype, `ref*` : ref*, n' : n, `ref'*` : ref*}: `%<=%`({TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n,), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref*{ref <- `ref*`}}, {TYPE `%%%`_tabletype(at, `[%..%]`_limits(`%`_u64(n',), `%`_u64(m,)?{m <- `m?`}), rt), REFS ref'*{ref' <- `ref'*`}}) -- if (n <= n') -- if (|ref*{ref <- `ref*`}| <= |ref'*{ref' <- `ref'*`}|) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_funcinst: `%<=%`(funcinst, funcinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{dt : deftype, mm : moduleinst, fc : funccode}: `%<=%`({TYPE dt, MODULE mm, CODE fc}, {TYPE dt, MODULE mm, CODE fc}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_datainst: `%<=%`(datainst, datainst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{`b*` : byte*, `b'*` : byte*}: `%<=%`({BYTES b*{b <- `b*`}}, {BYTES b'*{b' <- `b'*`}}) -- if ((b*{b <- `b*`} = b'*{b' <- `b'*`}) \/ (b'*{b' <- `b'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_eleminst: `%<=%`(eleminst, eleminst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{rt : reftype, `ref*` : ref*, `ref'*` : ref*}: `%<=%`({TYPE rt, REFS ref*{ref <- `ref*`}}, {TYPE rt, REFS ref'*{ref' <- `ref'*`}}) -- if ((ref*{ref <- `ref*`} = ref'*{ref' <- `ref'*`}) \/ (ref'*{ref' <- `ref'*`} = [])) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_structinst: `%<=%`(structinst, structinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- Expand: `%~~%`(dt, STRUCT_comptype(`%`_list(`%%`_fieldtype(mut?{mut <- `mut?`}, zt)*{`mut?` <- `mut?*`, zt <- `zt*`},))) @@ -32095,24 +32306,24 @@ relation Extend_structinst: `%<=%`(structinst, structinst) -- if (|`fv*`| = |`mut?*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`, `mut?` <- `mut?*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_arrayinst: `%<=%`(arrayinst, arrayinst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../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'*`}}) -- Expand: `%~~%`(dt, ARRAY_comptype(`%%`_fieldtype(mut?{mut <- `mut?`}, zt))) -- if (|`fv*`| = |`fv'*`|) -- (if ((mut?{mut <- `mut?`} = ?(MUT_mut)) \/ (fv = fv')))*{fv <- `fv*`, fv' <- `fv'*`} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_exninst: `%<=%`(exninst, exninst) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{ta : tagaddr, `val*` : val*}: `%<=%`({TAG ta, FIELDS val*{val <- `val*`}}, {TAG ta, FIELDS val*{val <- `val*`}}) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Extend_store: `%<=%`(store, store) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, s' : store}: `%<=%`(s, s') -- (if (a < |s.TAGS_store|))^(a<|s.TAGS_store|){} @@ -32146,43 +32357,43 @@ relation Extend_store: `%<=%`(store, store) -- (if (a < |s'.EXNS_store|))^(a<|s.EXNS_store|){} -- (Extend_exninst: `%<=%`(s.EXNS_store[a], s'.EXNS_store[a]))^(a<|s.EXNS_store|){} -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation State_ok: `|-%:%`(state, context) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, C : context}: `|-%:%`(`%;%`_state(s, f), C) -- Store_ok: `|-%:OK`(s,) -- Frame_ok: `%|-%:%`(s, f, C) -;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec +;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec relation Config_ok: `|-%:%`(config, resulttype) - ;; ../../../../specification/wasm-3.0/7.1-soundness.configurations.spectec + ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec rule _{s : store, f : frame, `instr*` : instr*, `t*` : valtype*, C : context}: `|-%:%`(`%;%`_config(`%;%`_state(s, f), instr*{instr <- `instr*`}), `%`_resulttype(t*{t <- `t*`},)) -- State_ok: `|-%:%`(`%;%`_state(s, f), C) -- Expr_ok2: `%;%|-%:%`(s, C, instr*{instr <- `instr*`}, `%`_resulttype(t*{t <- `t*`},)) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax A = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax B = nat -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax sym = | _FIRST(A) | _DOTS | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax symsplit = | _FIRST(A) | _LAST(A) -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax recorddots = () -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax record = { FIELD_1 A, @@ -32190,22 +32401,22 @@ syntax record = `...` recorddots } -;; ../../../../specification/wasm-3.0/X.1-notation.syntax.spectec +;; ../../../../specification/wasm-latest/X.1-notation.syntax.spectec syntax pth = | PTHSYNTAX -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec syntax T = nat -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremise: `%`(nat,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingPremisedots: `...` -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec relation NotationTypingScheme: `%`(nat,) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rule _{conclusion : nat, premise_1 : nat, premise_2 : nat, premise_n : nat}: `%`(conclusion,) -- NotationTypingPremise: `%`(premise_1,) @@ -32213,3699 +32424,3715 @@ relation NotationTypingScheme: `%`(nat,) -- NotationTypingPremisedots: `...` -- NotationTypingPremise: `%`(premise_n,) -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec rec { -;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:20.1-20.83 +;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:20.1-20.83 relation NotationTypingInstrScheme: `%|-%:%`(context, instr*, instrtype) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:22.1-23.38 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:22.1-23.38 rule `i32.add`{C : context}: `%|-%:%`(C, [BINOP_instr(I32_numtype, ADD_binop_)], `%->_%%`_instrtype(`%`_resulttype([I32_valtype I32_valtype],), [], `%`_resulttype([I32_valtype],))) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:25.1-27.29 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:25.1-27.29 rule `global.get`{C : context, x : idx, t : valtype, mut : mut}: `%|-%:%`(C, [`GLOBAL.GET`_instr(x)], `%->_%%`_instrtype(`%`_resulttype([],), [], `%`_resulttype([t],))) -- if (x!`%`_idx.0 < |C.GLOBALS_context|) -- if (C.GLOBALS_context[x!`%`_idx.0] = `%%`_globaltype(?(mut), t)) - ;; ../../../../specification/wasm-3.0/X.2-notation.typing.spectec:29.1-32.78 + ;; ../../../../specification/wasm-latest/X.2-notation.typing.spectec:29.1-32.78 rule block{C : context, blocktype : blocktype, `instr*` : instr*, `t_1*` : valtype*, `t_2*` : valtype*}: `%|-%:%`(C, [BLOCK_instr(blocktype, instr*{instr <- `instr*`})], `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- Blocktype_ok: `%|-%:%`(C, blocktype, `%->_%%`_instrtype(`%`_resulttype(t_1*{t_1 <- `t_1*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) -- NotationTypingInstrScheme: `%|-%:%`({TYPES [], 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*`},), [], `%`_resulttype(t_2*{t_2 <- `t_2*`},))) } -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec relation NotationReduct: `~>%`(instr*,) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 2{q_1 : num_(F64_numtype), q_4 : num_(F64_numtype), q_3 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_4) CONST_instr(F64_numtype, q_3) BINOP_instr(F64_numtype, ADD_binop_) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 3{q_1 : num_(F64_numtype), q_5 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_1) CONST_instr(F64_numtype, q_5) BINOP_instr(F64_numtype, MUL_binop_)],) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rule 4{q_6 : num_(F64_numtype)}: `~>%`([CONST_instr(F64_numtype, q_6)],) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $instrdots : instr* -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax label = | `LABEL_%{%}`(n : n, `instr*` : instr*) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec syntax callframe = | `FRAME_%{%}`(n : n, frame : frame) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec def $allocX(syntax X, syntax Y, store : store, X : X, Y : Y) : (store, addr) -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec rec { -;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:32.1-32.117 +;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:32.1-32.117 def $allocXs(syntax X, syntax Y, store : store, X*, Y*) : (store, addr*) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:33.1-33.57 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:33.1-33.57 def $allocXs{syntax X, syntax Y, s : store}(syntax X, syntax Y, s, [], []) = (s, []) - ;; ../../../../specification/wasm-3.0/X.3-notation.execution.spectec:34.1-36.65 + ;; ../../../../specification/wasm-latest/X.3-notation.execution.spectec:34.1-36.65 def $allocXs{syntax X, syntax Y, s : store, X : X, `X'*` : X*, Y : Y, `Y'*` : Y*, s_2 : store, a : addr, `a'*` : addr*, s_1 : store}(syntax X, syntax Y, s, [X] ++ X'*{X' <- `X'*`}, [Y] ++ Y'*{Y' <- `Y'*`}) = (s_2, [a] ++ a'*{a' <- `a'*`}) -- if ((s_1, a) = $allocX(syntax X, syntax Y, s, X, Y)) -- if ((s_2, a'*{a' <- `a'*`}) = $allocXs(syntax X, syntax Y, s_1, X'*{X' <- `X'*`}, Y'*{Y' <- `Y'*`})) } -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec syntax symdots = | `%`(i : nat,) -- if (i = 0) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var(syntax X) : nat - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec def $var{syntax X}(syntax X) = 0 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax abbreviated = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax expanded = () -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec syntax syntax = () -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bbyte : byte - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : nat} ``:(0x00 | ... | 0xFF) => `%`_byte(``,) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:9.1-11.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:9.1-11.82 grammar BuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:10.5-10.83 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:10.5-10.83 prod{n : n} `%`_byte(n,):Bbyte => `%`_uN(n,) -- if ((n < (2 ^ 7)) /\ (n < (2 ^ N))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:11.5-11.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:11.5-11.82 prod{m : m, n : n} {{`%`_byte(n,):Bbyte} {`%`_uN(m,):BuN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_uN((((2 ^ 7) * m) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec rec { -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:13.1-16.82 +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:13.1-16.82 grammar BsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:14.5-14.87 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:14.5-14.87 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN((n : nat <:> int),) -- if ((n < (2 ^ 6)) /\ (n < (2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:15.5-15.101 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:15.5-15.101 prod{n : n} `%`_byte(n,):Bbyte => `%`_sN(((n : nat <:> int) - ((2 ^ 7) : nat <:> int)),) -- if ((((2 ^ 6) <= n) /\ (n < (2 ^ 7))) /\ ((n : nat <:> int) >= (((2 ^ 7) : nat <:> int) - ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int)))) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec:16.5-16.82 + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec:16.5-16.82 prod{i : sN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat)), n : n} {{`%`_byte(n,):Bbyte} {i:BsN((((N : nat <:> int) - (7 : nat <:> int)) : int <:> nat))}} => `%`_sN(((((2 ^ 7) * (i!`%`_sN.0 : int <:> nat)) + (((n : nat <:> int) - ((2 ^ 7) : nat <:> int)) : int <:> nat)) : nat <:> int),) -- if ((n >= (2 ^ 7)) /\ (N > 7)) } -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{i : sN(N)} i:BsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar BfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`b*` : byte*} b*{b <- `b*`}:Bbyte^(((N : nat <:> rat) / (8 : nat <:> rat)) : rat <:> nat){} => $inv_fbytes_(N, b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu32 : u32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bu64 : u64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bs33 : s33 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : sN(33)} ``:BsN(33) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi32 : i32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(32)} ``:BuN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bi64 : i64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : uN(64)} ``:BuN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf32 : f32 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(32)} ``:BfN(32) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bf64 : f64 - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{`` : fN(64)} ``:BfN(64) => `` -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blist(syntax el, grammar BX : el) : el* - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{n : n, `el*` : el*} {{`%`_u32(n,):Bu32} {el:BX^n{el <- `el*`}}} => el^n{el <- `el*`} -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bname : name - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{name : name, `b*` : byte*} b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte) => name -- if ($utf8(name!`%`_name.0) = b*{b <- `b*`}) -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btypeidx : typeidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btagidx : tagidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bglobalidx : globalidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bmemidx : memidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Btableidx : tableidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfuncidx : funcidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bdataidx : dataidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Belemidx : elemidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blocalidx : localidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bfieldidx : fieldidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} x:Bu32 => x -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Blabelidx : labelidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{l : labelidx} l:Bu32 => l -;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec +;; ../../../../specification/wasm-latest/5.1-binary.values.spectec grammar Bexternidx : externidx - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x00} {x:Bfuncidx}} => FUNC_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x01} {x:Btableidx}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x02} {x:Bmemidx}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x03} {x:Bglobalidx}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/5.1-binary.values.spectec + ;; ../../../../specification/wasm-latest/5.1-binary.values.spectec prod{x : idx} {{0x04} {x:Btagidx}} => TAG_externidx(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bnumtype : numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7C => F64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7D => F32_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7E => I64_numtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7F => I32_numtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvectype : vectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x7B => V128_vectype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Babsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x69 => EXN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6A => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6B => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6C => I31_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6D => EQ_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6E => ANY_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x6F => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x70 => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x71 => NONE_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x72 => NOEXTERN_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x73 => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x74 => NOEXN_heaptype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bheaptype : heaptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => ht - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x33 : s33} x33:Bs33 => _IDX_heaptype($s33_to_u32(x33)) -- if (x33!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Breftype : reftype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x63} {ht:Bheaptype}} => REF_reftype(?(NULL_null), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} {{0x64} {ht:Bheaptype}} => REF_reftype(?(), ht) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ht : heaptype} ht:Babsheaptype => REF_reftype(?(NULL_null), ht) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bvaltype : valtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{nt : numtype} nt:Bnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{vt : vectype} vt:Bvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{rt : reftype} rt:Breftype => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bresulttype : resulttype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`t*` : valtype*} t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype) => `%`_resulttype(t*{t <- `t*`},) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmut : mut? - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x00 => ?() - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x01 => ?(MUT_mut) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bpacktype : packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x77 => I16_packtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod 0x78 => I8_packtype -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bstoragetype : storagetype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{t : valtype} t:Bvaltype => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{pt : packtype} pt:Bpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bfieldtype : fieldtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, zt : storagetype} {{zt:Bstoragetype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_fieldtype(mut?{mut <- `mut?`}, zt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bcomptype : comptype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ft : fieldtype} {{0x5E} {ft:Bfieldtype}} => ARRAY_comptype(ft) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`ft*` : fieldtype*} {{0x5F} {ft*{ft <- `ft*`}:Blist(syntax fieldtype, grammar Bfieldtype)}} => STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bsubtype : subtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{ct : comptype} ct:Bcomptype => SUB_subtype(?(FINAL_final), [], ct) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Brectype : rectype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`st*` : subtype*} {{0x4E} {st*{st <- `st*`}:Blist(syntax subtype, grammar Bsubtype)}} => REC_rectype(`%`_list(st*{st <- `st*`},)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{st : subtype} st:Bsubtype => REC_rectype(`%`_list([st],)) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Blimits : (addrtype, limits) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x00} {`%`_u64(n,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x01} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I32_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n} {{0x04} {`%`_u64(n,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?())) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{n : n, m : m} {{0x05} {`%`_u64(n,):Bu64} {`%`_u64(m,):Bu64}} => (I64_addrtype, `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,)))) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btagtype : tagtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bglobaltype : globaltype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{`mut?` : mut?, t : valtype} {{t:Bvaltype} {mut?{mut <- `mut?`}:Bmut}} => `%%`_globaltype(mut?{mut <- `mut?`}, t) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bmemtype : memtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits} (at, lim):Blimits => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Btabletype : tabletype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{rt:Breftype} {(at, lim):Blimits}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec +;; ../../../../specification/wasm-latest/5.2-binary.types.spectec grammar Bexterntype : externtype - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{x : idx} {{0x00} {x:Btypeidx}} => FUNC_externtype(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{tt : tabletype} {{0x01} {tt:Btabletype}} => TABLE_externtype(tt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{mt : memtype} {{0x02} {mt:Bmemtype}} => MEM_externtype(mt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{gt : globaltype} {{0x03} {gt:Bglobaltype}} => GLOBAL_externtype(gt) - ;; ../../../../specification/wasm-3.0/5.2-binary.types.spectec + ;; ../../../../specification/wasm-latest/5.2-binary.types.spectec prod{jt : tagtype} {{0x04} {jt:Btagtype}} => TAG_externtype(jt) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcastop : castop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x00 => (?(), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x01 => (?(NULL_null), ?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x02 => (?(), ?(NULL_null)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x03 => (?(NULL_null), ?(NULL_null)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bblocktype : blocktype - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod 0x40 => _RESULT_blocktype(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{t : valtype} t:Bvaltype => _RESULT_blocktype(?(t)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{i : s33} i:Bs33 => _IDX_blocktype(`%`_typeidx((i!`%`_s33.0 : int <:> nat),)) -- if (i!`%`_s33.0 >= (0 : nat <:> int)) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bcatch : catch - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x00} {x:Btagidx} {l:Blabelidx}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, l : labelidx} {{0x01} {x:Btagidx} {l:Blabelidx}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x02} {l:Blabelidx}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} {{0x03} {l:Blabelidx}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bmemarg : memidxop - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{n : n, m : m} {{`%`_u32(n,):Bu32} {`%`_u64(m,):Bu64}} => (`%`_memidx(0,), {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)}) -- if (n < (2 ^ 6)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{x : idx, n : n, m : m} {{`%`_u32(n,):Bu32} {x:Bmemidx} {`%`_u64(m,):Bu64}} => (x, {ALIGN `%`_u32((((n : nat <:> int) - ((2 ^ 6) : nat <:> int)) : int <:> nat),), OFFSET `%`_u64(m,)}) -- if (((2 ^ 6) <= n) /\ (n < (2 ^ 7))) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Blaneidx : laneidx - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{l : labelidx} `%`_byte(l!`%`_labelidx.0,):Bbyte => `%`_laneidx(l!`%`_labelidx.0,) -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:793.1-807.71 +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:800.1-814.71 grammar Binstr : instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:8.5-8.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:8.5-8.24 prod 0x00 => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:9.5-9.16 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:9.5-9.16 prod 0x01 => NOP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:10.5-10.17 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:10.5-10.17 prod 0x1A => DROP_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:11.5-11.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:11.5-11.19 prod 0x1B => SELECT_instr(?()) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:12.5-12.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:12.5-12.41 prod{`t*` : valtype*} {{0x1C} {t*{t <- `t*`}:Blist(syntax valtype, grammar Bvaltype)}} => SELECT_instr(?(t*{t <- `t*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:32.5-32.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:32.5-32.57 prod{bt : blocktype, `in*` : instr*} {{0x02} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => BLOCK_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:33.5-33.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:33.5-33.56 prod{bt : blocktype, `in*` : instr*} {{0x03} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => LOOP_instr(bt, in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:34.5-34.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:34.5-34.63 prod{bt : blocktype, `in*` : instr*} {{0x04} {bt:Bblocktype} {in:Binstr*{in <- `in*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in*{in <- `in*`}, []) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:35.5-36.55 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:35.5-36.55 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*} {{0x04} {bt:Bblocktype} {in_1:Binstr*{in_1 <- `in_1*`}} {0x05} {in_2:Binstr*{in_2 <- `in_2*`}} {0x0B}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:40.5-40.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:40.5-40.30 prod{x : idx} {{0x08} {x:Btagidx}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:41.5-41.22 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:41.5-41.22 prod 0x0A => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:42.5-42.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:42.5-42.29 prod{l : labelidx} {{0x0C} {l:Blabelidx}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:43.5-43.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:43.5-43.32 prod{l : labelidx} {{0x0D} {l:Blabelidx}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:44.5-44.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:44.5-44.62 prod{`l*` : labelidx*, l_n : labelidx} {{0x0E} {l*{l <- `l*`}:Blist(syntax labelidx, grammar Blabelidx)} {l_n:Blabelidx}} => BR_TABLE_instr(l*{l <- `l*`}, l_n) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:45.5-45.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:45.5-45.19 prod 0x0F => RETURN_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:46.5-46.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:46.5-46.30 prod{x : idx} {{0x10} {x:Bfuncidx}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:47.5-47.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:47.5-47.60 prod{x : idx, y : idx} {{0x11} {y:Btypeidx} {x:Btableidx}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:48.5-48.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:48.5-48.37 prod{x : idx} {{0x12} {x:Bfuncidx}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:49.5-49.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:49.5-49.67 prod{x : idx, y : idx} {{0x13} {y:Btypeidx} {x:Btableidx}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:50.5-50.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:50.5-50.41 prod{x : idx} {{0x14} {x:Btypeidx}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:51.5-51.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:51.5-51.48 prod{x : idx} {{0x15} {x:Btypeidx}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:52.5-52.81 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:52.5-52.81 prod{bt : blocktype, `c*` : catch*, `in*` : instr*} {{0x1F} {bt:Bblocktype} {c*{c <- `c*`}:Blist(syntax catch, grammar Bcatch)} {in:Binstr*{in <- `in*`}} {0x0B}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:53.5-53.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:53.5-53.37 prod{l : labelidx} {{0xD5} {l:Blabelidx}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:54.5-54.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:54.5-54.41 prod{l : labelidx} {{0xD6} {l:Blabelidx}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:55.5-56.100 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:55.5-56.100 prod{l : labelidx, `null_1?` : null?, ht_1 : heaptype, `null_2?` : null?, ht_2 : heaptype} {{0xFB} {`%`_u32(24,):Bu32} {(null_1?{null_1 <- `null_1?`}, null_2?{null_2 <- `null_2?`}):Bcastop} {l:Blabelidx} {ht_1:Bheaptype} {ht_2:Bheaptype}} => BR_ON_CAST_instr(l, REF_reftype(null_1?{null_1 <- `null_1?`}, ht_1), REF_reftype(null_2?{null_2 <- `null_2?`}, ht_2)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:57.5-58.105 + ;; ../../../../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-3.0/5.3-binary.instructions.spectec:71.5-71.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:71.5-71.36 prod{x : idx} {{0x20} {x:Blocalidx}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:72.5-72.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:72.5-72.36 prod{x : idx} {{0x21} {x:Blocalidx}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:73.5-73.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:73.5-73.36 prod{x : idx} {{0x22} {x:Blocalidx}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:77.5-77.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:77.5-77.38 prod{x : idx} {{0x23} {x:Bglobalidx}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:78.5-78.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:78.5-78.38 prod{x : idx} {{0x24} {x:Bglobalidx}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:85.5-85.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:85.5-85.36 prod{x : idx} {{0x25} {x:Btableidx}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:86.5-86.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:86.5-86.36 prod{x : idx} {{0x26} {x:Btableidx}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:87.5-87.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:87.5-87.58 prod{x : idx, y : idx} {{0xFC} {`%`_u32(12,):Bu32} {y:Belemidx} {x:Btableidx}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:88.5-88.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:88.5-88.43 prod{x : idx} {{0xFC} {`%`_u32(13,):Bu32} {x:Belemidx}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:89.5-89.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:89.5-89.67 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(14,):Bu32} {x_1:Btableidx} {x_2:Btableidx}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:90.5-90.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:90.5-90.45 prod{x : idx} {{0xFC} {`%`_u32(15,):Bu32} {x:Btableidx}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:91.5-91.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:91.5-91.45 prod{x : idx} {{0xFC} {`%`_u32(16,):Bu32} {x:Btableidx}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:92.5-92.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:92.5-92.45 prod{x : idx} {{0xFC} {`%`_u32(17,):Bu32} {x:Btableidx}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:105.5-105.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:105.5-105.41 prod{x : idx, ao : memarg} {{0x28} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:106.5-106.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:106.5-106.41 prod{x : idx, ao : memarg} {{0x29} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:107.5-107.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:107.5-107.41 prod{x : idx, ao : memarg} {{0x2A} {(x, ao):Bmemarg}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:108.5-108.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:108.5-108.41 prod{x : idx, ao : memarg} {{0x2B} {(x, ao):Bmemarg}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:109.5-109.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:109.5-109.50 prod{x : idx, ao : memarg} {{0x2C} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:110.5-110.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:110.5-110.50 prod{x : idx, ao : memarg} {{0x2D} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:111.5-111.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:111.5-111.51 prod{x : idx, ao : memarg} {{0x2E} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:112.5-112.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:112.5-112.51 prod{x : idx, ao : memarg} {{0x2F} {(x, ao):Bmemarg}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:113.5-113.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:113.5-113.50 prod{x : idx, ao : memarg} {{0x30} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:114.5-114.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:114.5-114.50 prod{x : idx, ao : memarg} {{0x31} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:115.5-115.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:115.5-115.51 prod{x : idx, ao : memarg} {{0x32} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:116.5-116.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:116.5-116.51 prod{x : idx, ao : memarg} {{0x33} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:117.5-117.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:117.5-117.51 prod{x : idx, ao : memarg} {{0x34} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:118.5-118.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:118.5-118.51 prod{x : idx, ao : memarg} {{0x35} {(x, ao):Bmemarg}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:119.5-119.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:119.5-119.42 prod{x : idx, ao : memarg} {{0x36} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:120.5-120.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:120.5-120.42 prod{x : idx, ao : memarg} {{0x37} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:121.5-121.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:121.5-121.42 prod{x : idx, ao : memarg} {{0x38} {(x, ao):Bmemarg}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:122.5-122.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:122.5-122.42 prod{x : idx, ao : memarg} {{0x39} {(x, ao):Bmemarg}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:123.5-123.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:123.5-123.45 prod{x : idx, ao : memarg} {{0x3A} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:124.5-124.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:124.5-124.46 prod{x : idx, ao : memarg} {{0x3B} {(x, ao):Bmemarg}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:125.5-125.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:125.5-125.45 prod{x : idx, ao : memarg} {{0x3C} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:126.5-126.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:126.5-126.46 prod{x : idx, ao : memarg} {{0x3D} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:127.5-127.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:127.5-127.46 prod{x : idx, ao : memarg} {{0x3E} {(x, ao):Bmemarg}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:128.5-128.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:128.5-128.36 prod{x : idx} {{0x3F} {x:Bmemidx}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:129.5-129.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:129.5-129.36 prod{x : idx} {{0x40} {x:Bmemidx}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:130.5-130.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:130.5-130.56 prod{x : idx, y : idx} {{0xFC} {`%`_u32(8,):Bu32} {y:Bdataidx} {x:Bmemidx}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:131.5-131.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:131.5-131.42 prod{x : idx} {{0xFC} {`%`_u32(9,):Bu32} {x:Bdataidx}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:132.5-132.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:132.5-132.64 prod{x_1 : idx, x_2 : idx} {{0xFC} {`%`_u32(10,):Bu32} {x_1:Bmemidx} {x_2:Bmemidx}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:133.5-133.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:133.5-133.44 prod{x : idx} {{0xFC} {`%`_u32(11,):Bu32} {x:Bmemidx}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:140.5-140.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:140.5-140.37 prod{ht : heaptype} {{0xD0} {ht:Bheaptype}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:141.5-141.24 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:141.5-141.24 prod 0xD1 => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:142.5-142.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:142.5-142.34 prod{x : idx} {{0xD2} {x:Bfuncidx}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:143.5-143.19 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:143.5-143.19 prod 0xD3 => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:144.5-144.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:144.5-144.28 prod 0xD4 => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:145.5-145.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:145.5-145.51 prod{ht : heaptype} {{0xFB} {`%`_u32(20,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:146.5-146.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:146.5-146.56 prod{ht : heaptype} {{0xFB} {`%`_u32(21,):Bu32} {ht:Bheaptype}} => `REF.TEST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:147.5-147.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:147.5-147.51 prod{ht : heaptype} {{0xFB} {`%`_u32(22,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:148.5-148.56 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:148.5-148.56 prod{ht : heaptype} {{0xFB} {`%`_u32(23,):Bu32} {ht:Bheaptype}} => `REF.CAST`_instr(REF_reftype(?(NULL_null), ht)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:152.5-152.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:152.5-152.43 prod{x : idx} {{0xFB} {`%`_u32(0,):Bu32} {x:Btypeidx}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:153.5-153.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:153.5-153.51 prod{x : idx} {{0xFB} {`%`_u32(1,):Bu32} {x:Btypeidx}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:154.5-154.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:154.5-154.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(2,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:155.5-155.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:155.5-155.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(3,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(S_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:156.5-156.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:156.5-156.59 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(4,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:157.5-157.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:157.5-157.57 prod{x : idx, i : fieldidx} {{0xFB} {`%`_u32(5,):Bu32} {x:Btypeidx} {i:Bfieldidx}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:161.5-161.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:161.5-161.42 prod{x : idx} {{0xFB} {`%`_u32(6,):Bu32} {x:Btypeidx}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:162.5-162.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:162.5-162.50 prod{x : idx} {{0xFB} {`%`_u32(7,):Bu32} {x:Btypeidx}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:163.5-163.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:163.5-163.57 prod{x : idx, n : n} {{0xFB} {`%`_u32(8,):Bu32} {x:Btypeidx} {`%`_u32(n,):Bu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:164.5-164.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:164.5-164.60 prod{x : idx, y : idx} {{0xFB} {`%`_u32(9,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:165.5-165.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:165.5-165.61 prod{x : idx, y : idx} {{0xFB} {`%`_u32(10,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:166.5-166.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:166.5-166.43 prod{x : idx} {{0xFB} {`%`_u32(11,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:167.5-167.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:167.5-167.45 prod{x : idx} {{0xFB} {`%`_u32(12,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:168.5-168.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:168.5-168.45 prod{x : idx} {{0xFB} {`%`_u32(13,):Bu32} {x:Btypeidx}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:169.5-169.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:169.5-169.43 prod{x : idx} {{0xFB} {`%`_u32(14,):Bu32} {x:Btypeidx}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:170.5-170.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:170.5-170.30 prod {{0xFB} {`%`_u32(15,):Bu32}} => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:171.5-171.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:171.5-171.44 prod{x : idx} {{0xFB} {`%`_u32(16,):Bu32} {x:Btypeidx}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:172.5-172.65 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:172.5-172.65 prod{x_1 : idx, x_2 : idx} {{0xFB} {`%`_u32(17,):Bu32} {x_1:Btypeidx} {x_2:Btypeidx}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:173.5-173.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:173.5-173.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(18,):Bu32} {x:Btypeidx} {y:Bdataidx}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:174.5-174.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:174.5-174.62 prod{x : idx, y : idx} {{0xFB} {`%`_u32(19,):Bu32} {x:Btypeidx} {y:Belemidx}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:178.5-178.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:178.5-178.39 prod {{0xFB} {`%`_u32(26,):Bu32}} => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:179.5-179.39 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:179.5-179.39 prod {{0xFB} {`%`_u32(27,):Bu32}} => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:183.5-183.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:183.5-183.28 prod {{0xFB} {`%`_u32(28,):Bu32}} => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:184.5-184.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:184.5-184.30 prod {{0xFB} {`%`_u32(29,):Bu32}} => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:185.5-185.30 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:185.5-185.30 prod {{0xFB} {`%`_u32(30,):Bu32}} => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:192.5-192.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:192.5-192.31 prod{i : i32} {{0x41} {i:Bi32}} => CONST_instr(I32_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:193.5-193.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:193.5-193.31 prod{i : i64} {{0x42} {i:Bi64}} => CONST_instr(I64_numtype, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:194.5-194.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:194.5-194.31 prod{p : f32} {{0x43} {p:Bf32}} => CONST_instr(F32_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:195.5-195.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:195.5-195.31 prod{p : f64} {{0x44} {p:Bf64}} => CONST_instr(F64_numtype, p) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:199.5-199.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:199.5-199.27 prod 0x45 => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:203.5-203.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:203.5-203.25 prod 0x46 => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:204.5-204.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:204.5-204.25 prod 0x47 => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:205.5-205.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:205.5-205.27 prod 0x48 => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:206.5-206.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:206.5-206.27 prod 0x49 => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:207.5-207.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:207.5-207.27 prod 0x4A => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:208.5-208.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:208.5-208.27 prod 0x4B => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:209.5-209.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:209.5-209.27 prod 0x4C => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:210.5-210.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:210.5-210.27 prod 0x4D => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:211.5-211.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:211.5-211.27 prod 0x4E => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:212.5-212.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:212.5-212.27 prod 0x4F => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:216.5-216.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:216.5-216.27 prod 0x50 => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:220.5-220.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:220.5-220.25 prod 0x51 => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:221.5-221.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:221.5-221.25 prod 0x52 => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:222.5-222.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:222.5-222.27 prod 0x53 => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:223.5-223.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:223.5-223.27 prod 0x54 => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:224.5-224.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:224.5-224.27 prod 0x55 => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:225.5-225.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:225.5-225.27 prod 0x56 => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:226.5-226.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:226.5-226.27 prod 0x57 => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:227.5-227.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:227.5-227.27 prod 0x58 => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:228.5-228.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:228.5-228.27 prod 0x59 => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:229.5-229.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:229.5-229.27 prod 0x5A => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:233.5-233.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:233.5-233.25 prod 0x5B => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:234.5-234.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:234.5-234.25 prod 0x5C => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:235.5-235.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:235.5-235.25 prod 0x5D => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:236.5-236.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:236.5-236.25 prod 0x5E => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:237.5-237.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:237.5-237.25 prod 0x5F => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:238.5-238.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:238.5-238.25 prod 0x60 => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:242.5-242.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:242.5-242.25 prod 0x61 => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:243.5-243.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:243.5-243.25 prod 0x62 => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:244.5-244.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:244.5-244.25 prod 0x63 => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:245.5-245.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:245.5-245.25 prod 0x64 => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:246.5-246.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:246.5-246.25 prod 0x65 => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:247.5-247.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:247.5-247.25 prod 0x66 => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:251.5-251.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:251.5-251.25 prod 0x67 => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:252.5-252.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:252.5-252.25 prod 0x68 => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:253.5-253.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:253.5-253.28 prod 0x69 => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:257.5-257.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:257.5-257.26 prod 0x6A => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:258.5-258.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:258.5-258.26 prod 0x6B => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:259.5-259.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:259.5-259.26 prod 0x6C => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:260.5-260.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:260.5-260.28 prod 0x6D => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:261.5-261.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:261.5-261.28 prod 0x6E => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:262.5-262.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:262.5-262.28 prod 0x6F => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:263.5-263.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:263.5-263.28 prod 0x70 => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:264.5-264.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:264.5-264.26 prod 0x71 => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:265.5-265.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:265.5-265.25 prod 0x72 => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:266.5-266.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:266.5-266.26 prod 0x73 => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:267.5-267.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:267.5-267.26 prod 0x74 => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:268.5-268.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:268.5-268.28 prod 0x75 => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:269.5-269.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:269.5-269.28 prod 0x76 => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:270.5-270.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:270.5-270.27 prod 0x77 => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:271.5-271.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:271.5-271.27 prod 0x78 => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:275.5-275.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:275.5-275.25 prod 0x79 => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:276.5-276.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:276.5-276.25 prod 0x7A => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:277.5-277.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:277.5-277.28 prod 0x7B => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:281.5-281.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:281.5-281.31 prod 0xC0 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:282.5-282.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:282.5-282.32 prod 0xC1 => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:286.5-286.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:286.5-286.31 prod 0xC2 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:287.5-287.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:287.5-287.32 prod 0xC3 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:288.5-288.32 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:288.5-288.32 prod 0xC4 => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:292.5-292.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:292.5-292.26 prod 0x7C => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:293.5-293.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:293.5-293.26 prod 0x7D => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:294.5-294.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:294.5-294.26 prod 0x7E => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:295.5-295.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:295.5-295.28 prod 0x7F => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:296.5-296.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:296.5-296.28 prod 0x80 => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:297.5-297.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:297.5-297.28 prod 0x81 => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:298.5-298.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:298.5-298.28 prod 0x82 => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:299.5-299.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:299.5-299.26 prod 0x83 => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:300.5-300.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:300.5-300.25 prod 0x84 => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:301.5-301.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:301.5-301.26 prod 0x85 => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:302.5-302.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:302.5-302.26 prod 0x86 => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:303.5-303.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:303.5-303.28 prod 0x87 => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:304.5-304.28 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:304.5-304.28 prod 0x88 => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:305.5-305.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:305.5-305.27 prod 0x89 => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:306.5-306.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:306.5-306.27 prod 0x8A => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:310.5-310.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:310.5-310.25 prod 0x8B => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:311.5-311.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:311.5-311.25 prod 0x8C => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:312.5-312.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:312.5-312.26 prod 0x8D => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:313.5-313.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:313.5-313.27 prod 0x8E => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:314.5-314.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:314.5-314.27 prod 0x8F => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:315.5-315.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:315.5-315.29 prod 0x90 => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:316.5-316.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:316.5-316.26 prod 0x91 => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:320.5-320.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:320.5-320.26 prod 0x92 => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:321.5-321.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:321.5-321.26 prod 0x93 => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:322.5-322.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:322.5-322.26 prod 0x94 => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:323.5-323.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:323.5-323.26 prod 0x95 => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:324.5-324.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:324.5-324.26 prod 0x96 => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:325.5-325.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:325.5-325.26 prod 0x97 => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:326.5-326.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:326.5-326.31 prod 0x98 => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:330.5-330.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:330.5-330.25 prod 0x99 => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:331.5-331.25 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:331.5-331.25 prod 0x9A => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:332.5-332.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:332.5-332.26 prod 0x9B => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:333.5-333.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:333.5-333.27 prod 0x9C => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:334.5-334.27 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:334.5-334.27 prod 0x9D => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:335.5-335.29 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:335.5-335.29 prod 0x9E => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:336.5-336.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:336.5-336.26 prod 0x9F => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:340.5-340.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:340.5-340.26 prod 0xA0 => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:341.5-341.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:341.5-341.26 prod 0xA1 => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:342.5-342.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:342.5-342.26 prod 0xA2 => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:343.5-343.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:343.5-343.26 prod 0xA3 => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:344.5-344.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:344.5-344.26 prod 0xA4 => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:345.5-345.26 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:345.5-345.26 prod 0xA5 => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:346.5-346.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:346.5-346.31 prod 0xA6 => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:351.5-351.31 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:351.5-351.31 prod 0xA7 => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:352.5-352.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:352.5-352.34 prod 0xA8 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:353.5-353.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:353.5-353.34 prod 0xA9 => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:354.5-354.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:354.5-354.34 prod 0xAA => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:355.5-355.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:355.5-355.34 prod 0xAB => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:356.5-356.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:356.5-356.35 prod 0xAC => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:357.5-357.35 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:357.5-357.35 prod 0xAD => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:358.5-358.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:358.5-358.34 prod 0xAE => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:359.5-359.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:359.5-359.34 prod 0xAF => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:360.5-360.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:360.5-360.34 prod 0xB0 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:361.5-361.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:361.5-361.34 prod 0xB1 => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:362.5-362.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:362.5-362.36 prod 0xB2 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:363.5-363.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:363.5-363.36 prod 0xB3 => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:364.5-364.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:364.5-364.36 prod 0xB4 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:365.5-365.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:365.5-365.36 prod 0xB5 => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:366.5-366.33 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:366.5-366.33 prod 0xB6 => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:367.5-367.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:367.5-367.36 prod 0xB7 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:368.5-368.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:368.5-368.36 prod 0xB8 => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:369.5-369.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:369.5-369.36 prod 0xB9 => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:370.5-370.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:370.5-370.36 prod 0xBA => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:371.5-371.34 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:371.5-371.34 prod 0xBB => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:372.5-372.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:372.5-372.38 prod 0xBC => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:373.5-373.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:373.5-373.38 prod 0xBD => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:374.5-374.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:374.5-374.38 prod 0xBE => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:375.5-375.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:375.5-375.38 prod 0xBF => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:379.5-379.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:379.5-379.45 prod {{0xFC} {`%`_u32(0,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:380.5-380.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:380.5-380.45 prod {{0xFC} {`%`_u32(1,):Bu32}} => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:381.5-381.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:381.5-381.45 prod {{0xFC} {`%`_u32(2,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:382.5-382.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:382.5-382.45 prod {{0xFC} {`%`_u32(3,):Bu32}} => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:383.5-383.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:383.5-383.45 prod {{0xFC} {`%`_u32(4,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:384.5-384.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:384.5-384.45 prod {{0xFC} {`%`_u32(5,):Bu32}} => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:385.5-385.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:385.5-385.45 prod {{0xFC} {`%`_u32(6,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:386.5-386.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:386.5-386.45 prod {{0xFC} {`%`_u32(7,):Bu32}} => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:396.5-396.50 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:390.5-390.38 + prod {{0xFC} {`%`_u32(13,):Bu32}} => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:391.5-391.38 + prod {{0xFC} {`%`_u32(14,):Bu32}} => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:392.5-392.45 + prod {{0xFC} {`%`_u32(15,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:393.5-393.45 + prod {{0xFC} {`%`_u32(16,):Bu32}} => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:403.5-403.50 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(0,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:397.5-397.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:404.5-404.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-3.0/5.3-binary.instructions.spectec:398.5-398.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:405.5-405.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-3.0/5.3-binary.instructions.spectec:399.5-399.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:406.5-406.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-3.0/5.3-binary.instructions.spectec:400.5-400.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:407.5-407.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-3.0/5.3-binary.instructions.spectec:401.5-401.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:408.5-408.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-3.0/5.3-binary.instructions.spectec:402.5-402.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:409.5-409.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-3.0/5.3-binary.instructions.spectec:403.5-403.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:410.5-410.61 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(7,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:404.5-404.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:411.5-411.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(8,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:405.5-405.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:412.5-412.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(9,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:406.5-406.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:413.5-413.63 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(10,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:407.5-407.52 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:414.5-414.52 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(11,):Bu32} {(x, ao):Bmemarg}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:408.5-408.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:415.5-415.72 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(84,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:409.5-409.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:416.5-416.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(85,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:410.5-410.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:417.5-417.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(86,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:411.5-411.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:418.5-418.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(87,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:412.5-412.73 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:419.5-419.73 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(88,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:413.5-413.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:420.5-420.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(89,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:414.5-414.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:421.5-421.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(90,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:415.5-415.74 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:422.5-422.74 prod{x : idx, ao : memarg, i : laneidx} {{0xFD} {`%`_u32(91,):Bu32} {(x, ao):Bmemarg} {i:Blaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:416.5-416.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:423.5-423.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(92,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:417.5-417.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:424.5-424.62 prod{x : idx, ao : memarg} {{0xFD} {`%`_u32(93,):Bu32} {(x, ao):Bmemarg}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:421.5-421.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:428.5-428.72 prod{`b*` : byte*} {{0xFD} {`%`_u32(12,):Bu32} {b:Bbyte^16{b <- `b*`}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, b^16{b <- `b*`})) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:425.5-425.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:432.5-432.61 prod{`l*` : labelidx*} {{0xFD} {`%`_u32(13,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx^16{l <- `l*`}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_laneidx(l!`%`_labelidx.0,)^16{l <- `l*`}) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:426.5-426.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:433.5-433.49 prod {{0xFD} {`%`_u32(14,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:427.5-427.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:434.5-434.58 prod {{0xFD} {`%`_u32(256,):Bu32}} => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:431.5-431.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:438.5-438.38 prod {{0xFD} {`%`_u32(15,):Bu32}} => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:432.5-432.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:439.5-439.38 prod {{0xFD} {`%`_u32(16,):Bu32}} => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:433.5-433.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:440.5-440.38 prod {{0xFD} {`%`_u32(17,):Bu32}} => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:434.5-434.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:441.5-441.38 prod {{0xFD} {`%`_u32(18,):Bu32}} => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:435.5-435.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:442.5-442.38 prod {{0xFD} {`%`_u32(19,):Bu32}} => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:436.5-436.38 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:443.5-443.38 prod {{0xFD} {`%`_u32(20,):Bu32}} => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:440.5-440.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:447.5-447.60 prod{l : labelidx} {{0xFD} {`%`_u32(21,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:441.5-441.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:448.5-448.60 prod{l : labelidx} {{0xFD} {`%`_u32(22,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:442.5-442.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:449.5-449.58 prod{l : labelidx} {{0xFD} {`%`_u32(23,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:443.5-443.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:450.5-450.60 prod{l : labelidx} {{0xFD} {`%`_u32(24,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:444.5-444.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:451.5-451.60 prod{l : labelidx} {{0xFD} {`%`_u32(25,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:445.5-445.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:452.5-452.58 prod{l : labelidx} {{0xFD} {`%`_u32(26,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:446.5-446.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:453.5-453.58 prod{l : labelidx} {{0xFD} {`%`_u32(27,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:447.5-447.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:454.5-454.58 prod{l : labelidx} {{0xFD} {`%`_u32(28,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:448.5-448.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:455.5-455.58 prod{l : labelidx} {{0xFD} {`%`_u32(29,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:449.5-449.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:456.5-456.58 prod{l : labelidx} {{0xFD} {`%`_u32(30,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:450.5-450.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:457.5-457.58 prod{l : labelidx} {{0xFD} {`%`_u32(31,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:451.5-451.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:458.5-458.58 prod{l : labelidx} {{0xFD} {`%`_u32(32,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:452.5-452.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:459.5-459.58 prod{l : labelidx} {{0xFD} {`%`_u32(33,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:453.5-453.58 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:460.5-460.58 prod{l : labelidx} {{0xFD} {`%`_u32(34,):Bu32} {`%`_laneidx(l!`%`_labelidx.0,):Blaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%`_laneidx(l!`%`_labelidx.0,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:457.5-457.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:464.5-464.41 prod {{0xFD} {`%`_u32(35,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:458.5-458.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:465.5-465.41 prod {{0xFD} {`%`_u32(36,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:459.5-459.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:466.5-466.43 prod {{0xFD} {`%`_u32(37,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:460.5-460.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:467.5-467.43 prod {{0xFD} {`%`_u32(38,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:461.5-461.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:468.5-468.43 prod {{0xFD} {`%`_u32(39,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:462.5-462.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:469.5-469.43 prod {{0xFD} {`%`_u32(40,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:463.5-463.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:470.5-470.43 prod {{0xFD} {`%`_u32(41,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:464.5-464.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:471.5-471.43 prod {{0xFD} {`%`_u32(42,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:465.5-465.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:472.5-472.43 prod {{0xFD} {`%`_u32(43,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:466.5-466.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:473.5-473.43 prod {{0xFD} {`%`_u32(44,):Bu32}} => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:470.5-470.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:477.5-477.41 prod {{0xFD} {`%`_u32(45,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:471.5-471.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:478.5-478.41 prod {{0xFD} {`%`_u32(46,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:472.5-472.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:479.5-479.43 prod {{0xFD} {`%`_u32(47,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:473.5-473.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:480.5-480.43 prod {{0xFD} {`%`_u32(48,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:474.5-474.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:481.5-481.43 prod {{0xFD} {`%`_u32(49,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:475.5-475.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:482.5-482.43 prod {{0xFD} {`%`_u32(50,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:476.5-476.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:483.5-483.43 prod {{0xFD} {`%`_u32(51,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:477.5-477.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:484.5-484.43 prod {{0xFD} {`%`_u32(52,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:478.5-478.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:485.5-485.43 prod {{0xFD} {`%`_u32(53,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:479.5-479.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:486.5-486.43 prod {{0xFD} {`%`_u32(54,):Bu32}} => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:483.5-483.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:490.5-490.41 prod {{0xFD} {`%`_u32(55,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:484.5-484.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:491.5-491.41 prod {{0xFD} {`%`_u32(56,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:485.5-485.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:492.5-492.43 prod {{0xFD} {`%`_u32(57,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:486.5-486.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:493.5-493.43 prod {{0xFD} {`%`_u32(58,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:487.5-487.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:494.5-494.43 prod {{0xFD} {`%`_u32(59,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:488.5-488.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:495.5-495.43 prod {{0xFD} {`%`_u32(60,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:489.5-489.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:496.5-496.43 prod {{0xFD} {`%`_u32(61,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:490.5-490.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:497.5-497.43 prod {{0xFD} {`%`_u32(62,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:491.5-491.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:498.5-498.43 prod {{0xFD} {`%`_u32(63,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:492.5-492.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:499.5-499.43 prod {{0xFD} {`%`_u32(64,):Bu32}} => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:496.5-496.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:503.5-503.41 prod {{0xFD} {`%`_u32(65,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:497.5-497.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:504.5-504.41 prod {{0xFD} {`%`_u32(66,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:498.5-498.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:505.5-505.41 prod {{0xFD} {`%`_u32(67,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:499.5-499.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:506.5-506.41 prod {{0xFD} {`%`_u32(68,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:500.5-500.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:507.5-507.41 prod {{0xFD} {`%`_u32(69,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:501.5-501.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:508.5-508.41 prod {{0xFD} {`%`_u32(70,):Bu32}} => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:505.5-505.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:512.5-512.41 prod {{0xFD} {`%`_u32(71,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:506.5-506.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:513.5-513.41 prod {{0xFD} {`%`_u32(72,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:507.5-507.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:514.5-514.41 prod {{0xFD} {`%`_u32(73,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:508.5-508.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:515.5-515.41 prod {{0xFD} {`%`_u32(74,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:509.5-509.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:516.5-516.41 prod {{0xFD} {`%`_u32(75,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:510.5-510.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:517.5-517.41 prod {{0xFD} {`%`_u32(76,):Bu32}} => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:514.5-514.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:521.5-521.36 prod {{0xFD} {`%`_u32(77,):Bu32}} => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:518.5-518.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:525.5-525.37 prod {{0xFD} {`%`_u32(78,):Bu32}} => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:519.5-519.40 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:526.5-526.40 prod {{0xFD} {`%`_u32(79,):Bu32}} => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:520.5-520.36 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:527.5-527.36 prod {{0xFD} {`%`_u32(80,):Bu32}} => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:521.5-521.37 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:528.5-528.37 prod {{0xFD} {`%`_u32(81,):Bu32}} => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:525.5-525.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:532.5-532.44 prod {{0xFD} {`%`_u32(82,):Bu32}} => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:529.5-529.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:536.5-536.43 prod {{0xFD} {`%`_u32(83,):Bu32}} => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:533.5-533.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:540.5-540.41 prod {{0xFD} {`%`_u32(96,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:534.5-534.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:541.5-541.41 prod {{0xFD} {`%`_u32(97,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:535.5-535.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:542.5-542.44 prod {{0xFD} {`%`_u32(98,):Bu32}} => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:539.5-539.48 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:546.5-546.48 prod {{0xFD} {`%`_u32(99,):Bu32}} => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:543.5-543.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:550.5-550.41 prod {{0xFD} {`%`_u32(100,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:547.5-547.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:554.5-554.53 prod {{0xFD} {`%`_u32(101,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:548.5-548.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:555.5-555.53 prod {{0xFD} {`%`_u32(102,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:552.5-552.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:559.5-559.45 prod {{0xFD} {`%`_u32(107,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:553.5-553.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:560.5-560.47 prod {{0xFD} {`%`_u32(108,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:554.5-554.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:561.5-561.47 prod {{0xFD} {`%`_u32(109,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:558.5-558.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:565.5-565.43 prod {{0xFD} {`%`_u32(110,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:559.5-559.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:566.5-566.49 prod {{0xFD} {`%`_u32(111,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:560.5-560.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:567.5-567.49 prod {{0xFD} {`%`_u32(112,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:561.5-561.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:568.5-568.43 prod {{0xFD} {`%`_u32(113,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:562.5-562.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:569.5-569.49 prod {{0xFD} {`%`_u32(114,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:563.5-563.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:570.5-570.49 prod {{0xFD} {`%`_u32(115,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:564.5-564.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:571.5-571.45 prod {{0xFD} {`%`_u32(118,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:565.5-565.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:572.5-572.45 prod {{0xFD} {`%`_u32(119,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:566.5-566.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:573.5-573.45 prod {{0xFD} {`%`_u32(120,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:567.5-567.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:574.5-574.45 prod {{0xFD} {`%`_u32(121,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:568.5-568.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:575.5-575.46 prod {{0xFD} {`%`_u32(123,):Bu32}} => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:572.5-572.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:579.5-579.70 prod {{0xFD} {`%`_u32(124,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:573.5-573.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:580.5-580.70 prod {{0xFD} {`%`_u32(125,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:577.5-577.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:584.5-584.42 prod {{0xFD} {`%`_u32(128,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:578.5-578.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:585.5-585.42 prod {{0xFD} {`%`_u32(129,):Bu32}} => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:582.5-582.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:589.5-589.53 prod {{0xFD} {`%`_u32(130,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:583.5-583.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:590.5-590.43 prod {{0xFD} {`%`_u32(142,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:584.5-584.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:591.5-591.49 prod {{0xFD} {`%`_u32(143,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:585.5-585.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:592.5-592.49 prod {{0xFD} {`%`_u32(144,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:586.5-586.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:593.5-593.43 prod {{0xFD} {`%`_u32(145,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:587.5-587.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:594.5-594.49 prod {{0xFD} {`%`_u32(146,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:588.5-588.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:595.5-595.49 prod {{0xFD} {`%`_u32(147,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:589.5-589.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:596.5-596.43 prod {{0xFD} {`%`_u32(149,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:590.5-590.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:597.5-597.45 prod {{0xFD} {`%`_u32(150,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:591.5-591.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:598.5-598.45 prod {{0xFD} {`%`_u32(151,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:592.5-592.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:599.5-599.45 prod {{0xFD} {`%`_u32(152,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:593.5-593.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:600.5-600.45 prod {{0xFD} {`%`_u32(153,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:594.5-594.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:601.5-601.46 prod {{0xFD} {`%`_u32(155,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:595.5-595.57 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:602.5-602.57 prod {{0xFD} {`%`_u32(273,):Bu32}} => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:599.5-599.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:606.5-606.49 prod {{0xFD} {`%`_u32(131,):Bu32}} => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:603.5-603.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:610.5-610.41 prod {{0xFD} {`%`_u32(132,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:607.5-607.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:614.5-614.53 prod {{0xFD} {`%`_u32(133,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:608.5-608.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:615.5-615.53 prod {{0xFD} {`%`_u32(134,):Bu32}} => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:612.5-612.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:619.5-619.63 prod {{0xFD} {`%`_u32(135,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:613.5-613.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:620.5-620.64 prod {{0xFD} {`%`_u32(136,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:614.5-614.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:621.5-621.63 prod {{0xFD} {`%`_u32(137,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:615.5-615.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:622.5-622.64 prod {{0xFD} {`%`_u32(138,):Bu32}} => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:619.5-619.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:626.5-626.45 prod {{0xFD} {`%`_u32(139,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:620.5-620.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:627.5-627.47 prod {{0xFD} {`%`_u32(140,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:621.5-621.47 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:628.5-628.47 prod {{0xFD} {`%`_u32(141,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:625.5-625.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:632.5-632.66 prod {{0xFD} {`%`_u32(156,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:626.5-626.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:633.5-633.67 prod {{0xFD} {`%`_u32(157,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:627.5-627.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:634.5-634.66 prod {{0xFD} {`%`_u32(158,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:628.5-628.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:635.5-635.67 prod {{0xFD} {`%`_u32(159,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:629.5-629.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:636.5-636.67 prod {{0xFD} {`%`_u32(274,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:633.5-633.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:640.5-640.70 prod {{0xFD} {`%`_u32(126,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:634.5-634.70 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:641.5-641.70 prod {{0xFD} {`%`_u32(127,):Bu32}} => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:638.5-638.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:645.5-645.42 prod {{0xFD} {`%`_u32(160,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:639.5-639.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:646.5-646.42 prod {{0xFD} {`%`_u32(161,):Bu32}} => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:643.5-643.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:650.5-650.49 prod {{0xFD} {`%`_u32(163,):Bu32}} => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:647.5-647.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:654.5-654.41 prod {{0xFD} {`%`_u32(164,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:651.5-651.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:658.5-658.63 prod {{0xFD} {`%`_u32(167,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:652.5-652.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:659.5-659.64 prod {{0xFD} {`%`_u32(168,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:653.5-653.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:660.5-660.63 prod {{0xFD} {`%`_u32(169,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:654.5-654.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:661.5-661.64 prod {{0xFD} {`%`_u32(170,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:658.5-658.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:665.5-665.45 prod {{0xFD} {`%`_u32(171,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:659.5-659.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:666.5-666.49 prod {{0xFD} {`%`_u32(172,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:660.5-660.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:667.5-667.49 prod {{0xFD} {`%`_u32(173,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:664.5-664.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:671.5-671.43 prod {{0xFD} {`%`_u32(174,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:665.5-665.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:672.5-672.43 prod {{0xFD} {`%`_u32(177,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:666.5-666.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:673.5-673.43 prod {{0xFD} {`%`_u32(181,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:667.5-667.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:674.5-674.45 prod {{0xFD} {`%`_u32(182,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:668.5-668.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:675.5-675.45 prod {{0xFD} {`%`_u32(183,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:669.5-669.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:676.5-676.45 prod {{0xFD} {`%`_u32(184,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:670.5-670.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:677.5-677.45 prod {{0xFD} {`%`_u32(185,):Bu32}} => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:674.5-674.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:681.5-681.59 prod {{0xFD} {`%`_u32(186,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:675.5-675.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:682.5-682.66 prod {{0xFD} {`%`_u32(188,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:676.5-676.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:683.5-683.67 prod {{0xFD} {`%`_u32(189,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:677.5-677.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:684.5-684.66 prod {{0xFD} {`%`_u32(190,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:678.5-678.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:685.5-685.67 prod {{0xFD} {`%`_u32(191,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:682.5-682.72 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:689.5-689.72 prod {{0xFD} {`%`_u32(275,):Bu32}} => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:686.5-686.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:693.5-693.42 prod {{0xFD} {`%`_u32(192,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:687.5-687.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:694.5-694.42 prod {{0xFD} {`%`_u32(193,):Bu32}} => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:691.5-691.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:698.5-698.49 prod {{0xFD} {`%`_u32(195,):Bu32}} => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:695.5-695.41 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:702.5-702.41 prod {{0xFD} {`%`_u32(196,):Bu32}} => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:699.5-699.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:706.5-706.63 prod {{0xFD} {`%`_u32(199,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:700.5-700.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:707.5-707.64 prod {{0xFD} {`%`_u32(200,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:701.5-701.63 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:708.5-708.63 prod {{0xFD} {`%`_u32(201,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:702.5-702.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:709.5-709.64 prod {{0xFD} {`%`_u32(202,):Bu32}} => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:706.5-706.45 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:713.5-713.45 prod {{0xFD} {`%`_u32(203,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:707.5-707.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:714.5-714.49 prod {{0xFD} {`%`_u32(204,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:708.5-708.49 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:715.5-715.49 prod {{0xFD} {`%`_u32(205,):Bu32}} => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:712.5-712.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:719.5-719.43 prod {{0xFD} {`%`_u32(206,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:713.5-713.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:720.5-720.43 prod {{0xFD} {`%`_u32(209,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:714.5-714.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:721.5-721.43 prod {{0xFD} {`%`_u32(213,):Bu32}} => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:718.5-718.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:725.5-725.42 prod {{0xFD} {`%`_u32(214,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:719.5-719.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:726.5-726.42 prod {{0xFD} {`%`_u32(215,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:720.5-720.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:727.5-727.46 prod {{0xFD} {`%`_u32(216,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:721.5-721.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:728.5-728.46 prod {{0xFD} {`%`_u32(217,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:722.5-722.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:729.5-729.46 prod {{0xFD} {`%`_u32(218,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:723.5-723.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:730.5-730.46 prod {{0xFD} {`%`_u32(219,):Bu32}} => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:727.5-727.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:734.5-734.66 prod {{0xFD} {`%`_u32(220,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:728.5-728.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:735.5-735.67 prod {{0xFD} {`%`_u32(221,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:729.5-729.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:736.5-736.66 prod {{0xFD} {`%`_u32(222,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:730.5-730.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:737.5-737.67 prod {{0xFD} {`%`_u32(223,):Bu32}} => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:734.5-734.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:741.5-741.43 prod {{0xFD} {`%`_u32(103,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:735.5-735.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:742.5-742.44 prod {{0xFD} {`%`_u32(104,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:736.5-736.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:743.5-743.44 prod {{0xFD} {`%`_u32(105,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:737.5-737.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:744.5-744.46 prod {{0xFD} {`%`_u32(106,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:738.5-738.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:745.5-745.42 prod {{0xFD} {`%`_u32(224,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:739.5-739.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:746.5-746.42 prod {{0xFD} {`%`_u32(225,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:740.5-740.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:747.5-747.43 prod {{0xFD} {`%`_u32(227,):Bu32}} => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:744.5-744.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:751.5-751.43 prod {{0xFD} {`%`_u32(228,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:745.5-745.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:752.5-752.43 prod {{0xFD} {`%`_u32(229,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:746.5-746.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:753.5-753.43 prod {{0xFD} {`%`_u32(230,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:747.5-747.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:754.5-754.43 prod {{0xFD} {`%`_u32(231,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:748.5-748.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:755.5-755.43 prod {{0xFD} {`%`_u32(232,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:749.5-749.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:756.5-756.43 prod {{0xFD} {`%`_u32(233,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:750.5-750.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:757.5-757.44 prod {{0xFD} {`%`_u32(234,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:751.5-751.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:758.5-758.44 prod {{0xFD} {`%`_u32(235,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:752.5-752.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:759.5-759.51 prod {{0xFD} {`%`_u32(269,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:753.5-753.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:760.5-760.51 prod {{0xFD} {`%`_u32(270,):Bu32}} => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:757.5-757.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:764.5-764.53 prod {{0xFD} {`%`_u32(261,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:758.5-758.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:765.5-765.54 prod {{0xFD} {`%`_u32(262,):Bu32}} => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:762.5-762.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:769.5-769.43 prod {{0xFD} {`%`_u32(116,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:763.5-763.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:770.5-770.44 prod {{0xFD} {`%`_u32(117,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:764.5-764.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:771.5-771.44 prod {{0xFD} {`%`_u32(122,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:765.5-765.46 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:772.5-772.46 prod {{0xFD} {`%`_u32(148,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:766.5-766.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:773.5-773.42 prod {{0xFD} {`%`_u32(236,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:767.5-767.42 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:774.5-774.42 prod {{0xFD} {`%`_u32(237,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:768.5-768.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:775.5-775.43 prod {{0xFD} {`%`_u32(239,):Bu32}} => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:772.5-772.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:779.5-779.43 prod {{0xFD} {`%`_u32(240,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:773.5-773.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:780.5-780.43 prod {{0xFD} {`%`_u32(241,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:774.5-774.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:781.5-781.43 prod {{0xFD} {`%`_u32(242,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:775.5-775.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:782.5-782.43 prod {{0xFD} {`%`_u32(243,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:776.5-776.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:783.5-783.43 prod {{0xFD} {`%`_u32(244,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:777.5-777.43 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:784.5-784.43 prod {{0xFD} {`%`_u32(245,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:778.5-778.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:785.5-785.44 prod {{0xFD} {`%`_u32(246,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:779.5-779.44 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:786.5-786.44 prod {{0xFD} {`%`_u32(247,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:780.5-780.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:787.5-787.51 prod {{0xFD} {`%`_u32(271,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:781.5-781.51 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:788.5-788.51 prod {{0xFD} {`%`_u32(272,):Bu32}} => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:785.5-785.53 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:792.5-792.53 prod {{0xFD} {`%`_u32(263,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:786.5-786.54 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:793.5-793.54 prod {{0xFD} {`%`_u32(264,):Bu32}} => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:787.5-787.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:794.5-794.59 prod {{0xFD} {`%`_u32(265,):Bu32}} => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:788.5-788.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:795.5-795.59 prod {{0xFD} {`%`_u32(266,):Bu32}} => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:789.5-789.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:796.5-796.59 prod {{0xFD} {`%`_u32(267,):Bu32}} => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:790.5-790.59 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:797.5-797.59 prod {{0xFD} {`%`_u32(268,):Bu32}} => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:794.5-794.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:801.5-801.61 prod {{0xFD} {`%`_u32(94,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:795.5-795.61 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:802.5-802.61 prod {{0xFD} {`%`_u32(95,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:796.5-796.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:803.5-803.62 prod {{0xFD} {`%`_u32(248,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:797.5-797.62 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:804.5-804.62 prod {{0xFD} {`%`_u32(249,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:798.5-798.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:805.5-805.60 prod {{0xFD} {`%`_u32(250,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:799.5-799.60 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:806.5-806.60 prod {{0xFD} {`%`_u32(251,):Bu32}} => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:800.5-800.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:807.5-807.67 prod {{0xFD} {`%`_u32(252,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:801.5-801.67 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:808.5-808.67 prod {{0xFD} {`%`_u32(253,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:802.5-802.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:809.5-809.64 prod {{0xFD} {`%`_u32(254,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:803.5-803.64 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:810.5-810.64 prod {{0xFD} {`%`_u32(255,):Bu32}} => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:804.5-804.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:811.5-811.66 prod {{0xFD} {`%`_u32(257,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:805.5-805.66 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:812.5-812.66 prod {{0xFD} {`%`_u32(258,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:806.5-806.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:813.5-813.71 prod {{0xFD} {`%`_u32(259,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec:807.5-807.71 + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec:814.5-814.71 prod {{0xFD} {`%`_u32(260,):Bu32}} => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) } -;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec +;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec grammar Bexpr : expr - ;; ../../../../specification/wasm-3.0/5.3-binary.instructions.spectec + ;; ../../../../specification/wasm-latest/5.3-binary.instructions.spectec prod{`in*` : instr*} {{in:Binstr*{in <- `in*`}} {0x0B}} => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bsection_(N : N, syntax en, grammar BX : en*) : en* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`en*` : en*, len : nat} {{`%`_byte(N,):Bbyte} {`%`_u32(len,):Bu32} {en*{en <- `en*`}:BX}} => en*{en <- `en*`} -- if (len = 0) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod eps => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustom : ()* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{Bname} {Bbyte*{}}} => [] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcustomsec : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod Bsection_(0, syntax (), grammar Bcustom) => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btype : type - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{qt : rectype} qt:Brectype => TYPE_type(qt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btypesec : type* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ty*` : type*} ty*{ty <- `ty*`}:Bsection_(1, syntax type, grammar Blist(syntax type, grammar Btype)) => ty*{ty <- `ty*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimport : import - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype} {{nm_1:Bname} {nm_2:Bname} {xt:Bexterntype}} => IMPORT_import(nm_1, nm_2, xt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bimportsec : import* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`im*` : import*} im*{im <- `im*`}:Bsection_(2, syntax import, grammar Blist(syntax import, grammar Bimport)) => im*{im <- `im*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfuncsec : typeidx* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`x*` : idx*} x*{x <- `x*`}:Bsection_(3, syntax typeidx, grammar Blist(syntax typeidx, grammar Btypeidx)) => x*{x <- `x*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btable : table - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, ht : heaptype, at : addrtype, lim : limits} tt:Btabletype => TABLE_table(tt, [`REF.NULL`_instr(ht)]) -- if (tt = `%%%`_tabletype(at, lim, REF_reftype(NULL_null?{}, ht))) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{tt : tabletype, e : expr} {{0x40} {0x00} {tt:Btabletype} {e:Bexpr}} => TABLE_table(tt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btablesec : table* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tab*` : table*} tab*{tab <- `tab*`}:Bsection_(4, syntax table, grammar Blist(syntax table, grammar Btable)) => tab*{tab <- `tab*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmem : mem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{mt : memtype} mt:Bmemtype => MEMORY_mem(mt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmemsec : mem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`mem*` : mem*} mem*{mem <- `mem*`}:Bsection_(5, syntax mem, grammar Blist(syntax mem, grammar Bmem)) => mem*{mem <- `mem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobal : global - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{gt : globaltype, e : expr} {{gt:Bglobaltype} {e:Bexpr}} => GLOBAL_global(gt, e) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bglobalsec : global* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`glob*` : global*} glob*{glob <- `glob*`}:Bsection_(6, syntax global, grammar Blist(syntax global, grammar Bglobal)) => glob*{glob <- `glob*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexport : export - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nm : name, xx : externidx} {{nm:Bname} {xx:Bexternidx}} => EXPORT_export(nm, xx) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bexportsec : export* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`ex*` : export*} ex*{ex <- `ex*`}:Bsection_(7, syntax export, grammar Blist(syntax export, grammar Bexport)) => ex*{ex <- `ex*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstart : start* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{x : idx} x:Bfuncidx => [START_start(x)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bstartsec : start? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{startopt : startopt} startopt:Bsection_(8, syntax start, grammar Bstart) => $opt_(syntax start, startopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemkind : reftype - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod 0x00 => REF_reftype(?(), FUNC_heaptype) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belem : elem - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`y*` : idx*, e_o : expr} {{`%`_u32(0,):Bu32} {e_o:Bexpr} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(REF_reftype(?(), FUNC_heaptype), [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(`%`_tableidx(0,), e_o)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(1,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Btableidx} {e:Bexpr} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], ACTIVE_elemmode(x, e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `y*` : idx*} {{`%`_u32(3,):Bu32} {rt:Belemkind} {y*{y <- `y*`}:Blist(syntax funcidx, grammar Bfuncidx)}} => ELEM_elem(rt, [`REF.FUNC`_instr(y)*{y <- `y*`}], DECLARE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`e*` : expr*, e_O : expr} {{`%`_u32(4,):Bu32} {e_O:Bexpr} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(REF_reftype(?(NULL_null), FUNC_heaptype), e*{e <- `e*`}, ACTIVE_elemmode(`%`_tableidx(0,), e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(5,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e_O : expr} {{`%`_u32(6,):Bu32} {x:Btableidx} {e_O:Bexpr} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e_O)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{rt : reftype, `e*` : expr*} {{`%`_u32(7,):Bu32} {rt:Breftype} {e*{e <- `e*`}:Blist(syntax expr, grammar Bexpr)}} => ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Belemsec : elem* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`elem*` : elem*} elem*{elem <- `elem*`}:Bsection_(9, syntax elem, grammar Blist(syntax elem, grammar Belem)) => elem*{elem <- `elem*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Blocals : local* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{t : valtype, n : n} {{`%`_u32(n,):Bu32} {t:Bvaltype}} => LOCAL_local(t)^n{} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bfunc : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`loc**` : local**, e : expr} {{loc*{loc <- `loc*`}*{`loc*` <- `loc**`}:Blist(syntax local*, grammar Blocals)} {e:Bexpr}} => ($concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e) -- if (|$concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcode : code - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{code : code, len : nat} {{`%`_u32(len,):Bu32} {code:Bfunc}} => code -- if (len = 0) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bcodesec : code* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`code*` : code*} code*{code <- `code*`}:Bsection_(10, syntax code, grammar Blist(syntax code, grammar Bcode)) => code*{code <- `code*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdata : data - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, e : expr} {{`%`_u32(0,):Bu32} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(`%`_memidx(0,), e)) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*} {{`%`_u32(1,):Bu32} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, PASSIVE_datamode) - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`b*` : byte*, x : idx, e : expr} {{`%`_u32(2,):Bu32} {x:Bmemidx} {e:Bexpr} {b*{b <- `b*`}:Blist(syntax byte, grammar Bbyte)}} => DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatasec : data* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`data*` : data*} data*{data <- `data*`}:Bsection_(11, syntax data, grammar Blist(syntax data, grammar Bdata)) => data*{data <- `data*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacnt : u32* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{n : n} `%`_u32(n,):Bu32 => [`%`_u32(n,)] -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bdatacntsec : u32? - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{nopt : nopt} nopt:Bsection_(12, syntax u32, grammar Bdatacnt) => $opt_(syntax u32, nopt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btag : tag - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{jt : tagtype} jt:Btagtype => TAG_tag(jt) -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Btagsec : tag* - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`tag*` : tag*} tag*{tag <- `tag*`}:Bsection_(13, syntax tag, grammar Blist(syntax tag, grammar Btag)) => tag*{tag <- `tag*`} -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmagic : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x00} {0x61} {0x73} {0x6D}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bversion : () - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod {{0x01} {0x00} {0x00} {0x00}} => ((), ()).1 -;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec +;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec grammar Bmodule : module - ;; ../../../../specification/wasm-3.0/5.4-binary.modules.spectec + ;; ../../../../specification/wasm-latest/5.4-binary.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `typeidx*` : typeidx*, `n?` : n?, `expr*` : expr*, `local**` : local**} {Bmagic Bversion {Bcustomsec*{}} {type*{type <- `type*`}:Btypesec} {Bcustomsec*{}} {import*{import <- `import*`}:Bimportsec} {Bcustomsec*{}} {typeidx*{typeidx <- `typeidx*`}:Bfuncsec} {Bcustomsec*{}} {table*{table <- `table*`}:Btablesec} {Bcustomsec*{}} {mem*{mem <- `mem*`}:Bmemsec} {Bcustomsec*{}} {tag*{tag <- `tag*`}:Btagsec} {Bcustomsec*{}} {global*{global <- `global*`}:Bglobalsec} {Bcustomsec*{}} {export*{export <- `export*`}:Bexportsec} {Bcustomsec*{}} {start?{start <- `start?`}:Bstartsec} {Bcustomsec*{}} {elem*{elem <- `elem*`}:Belemsec} {Bcustomsec*{}} {`%`_u32(n,)?{n <- `n?`}:Bdatacntsec} {Bcustomsec*{}} {(local*{local <- `local*`}, expr)*{expr <- `expr*`, `local*` <- `local**`}:Bcodesec} {Bcustomsec*{}} {data*{data <- `data*`}:Bdatasec} {Bcustomsec*{}}} => MODULE_module(`%`_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*`},)) -- (if (n = |data*{data <- `data*`}|))?{n <- `n?`} -- if ((n?{n <- `n?`} =/= ?()) \/ ($dataidx_funcs(func*{func <- `func*`}) = [])) -- (if (func = FUNC_func(typeidx, local*{local <- `local*`}, expr)))*{expr <- `expr*`, func <- `func*`, `local*` <- `local**`, typeidx <- `typeidx*`} -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tchar : char - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0x00 | ... | 0xD7FF) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:(0xE000 | ... | 0x10FFFF) => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tsource : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tchar*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TuNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TsNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar TfNplain : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:eps => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x30 | ... | 0x39) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x41 | ... | 0x5A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:(0x61 | ... | 0x7A) => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x21 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x23 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x24 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x25 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x26 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x27 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2B => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x2F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3A => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3D => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x3F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x40 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5E => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x5F => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x60 => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7C => `%`_char(``,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : nat} ``:0x7E => `%`_char(``,) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x30 => 0 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x31 => 1 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x32 => 2 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x33 => 3 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x34 => 4 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x35 => 5 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x36 => 6 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x37 => 7 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x38 => 8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x39 => 9 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexdigit : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x41 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x42 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x43 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x44 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x45 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x46 => 15 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x61 => 10 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x62 => 11 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x63 => 12 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x64 => 13 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x65 => 14 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod 0x66 => 15 -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:22.1-24.46 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:22.1-24.46 grammar Thexnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:23.5-23.21 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:23.5-23.21 prod{h : nat} h:Thexdigit => h - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:24.5-24.46 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:24.5-24.46 prod{n : n, h : nat} {{n:Thexnum} {"_"?{}} {h:Thexdigit}} => ((16 * n) + h) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringchar : char - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tchar => c -- if ((((c!`%`_char.0 >= 32) /\ (c!`%`_char.0 =/= 127)) /\ (c =/= `%`_char(34,))) /\ (c =/= `%`_char(92,))) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\t" => `%`_char(9,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\n" => `%`_char(10,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\r" => `%`_char(13,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\"" => `%`_char(34,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\'" => `%`_char(39,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "\\\\" => `%`_char(92,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"\\u{"} {n:Thexnum} {"}"}} => `%`_char(n,) -- if ((n < 55296) \/ ((59392 <= n) /\ (n < 1114112))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstringelem : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{c : char} c:Tstringchar => $utf8([c]) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{h_1 : nat, h_2 : nat} {{"\\"} {h_1:Thexdigit} {h_2:Thexdigit}} => [`%`_byte(((16 * h_1) + h_2),)] -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tstring : byte* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`b**` : byte**} {{"\""} {b*{b <- `b*`}:Tstringelem*{`b*` <- `b**`}} {"\""}} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -- if (|$concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`})| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tname : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*, `b*` : byte*} b*{b <- `b*`}:Tstring => `%`_name(c*{c <- `c*`},) -- if (b*{b <- `b*`} = $utf8(c*{c <- `c*`})) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tid : name - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {c*{c <- `c*`}:Tidchar+{}}} => `%`_name(c*{c <- `c*`},) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`c*` : char*} {{"$"} {`%`_name(c*{c <- `c*`},):Tname}} => `%`_name(c*{c <- `c*`},) -- if (|c*{c <- `c*`}| > 0) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tkeyword : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{(0x61 | ... | 0x7A)} {Tidchar*{}}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Treserved : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} [``]:({Tidchar} | {Tstring} | {","} | {";"} | {"["} | {"]"} | {"{"} | {"}"})+{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Ttoken : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tkeyword => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TuNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TsNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:TfNplain => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : byte} [``]:Tstring => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tid => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x28 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x29 => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Treserved => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tannotid : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char} [``]:Tidchar+{} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : name} ``:Tname => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:56.1-57.26 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:56.1-57.26 grammar Tblockcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:57.5-57.26 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:57.5-57.26 prod{`` : ()} ``:{{"(;"} {Tblockchar*{}} {";)"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:60.1-64.18 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:60.1-64.18 grammar Tblockchar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:61.5-61.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:61.5-61.47 prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:62.5-62.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:62.5-62.47 prod{`` : (), c : char} ``:{{";"+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(41,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:63.5-63.47 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:63.5-63.47 prod{`` : (), c : char} ``:{{"("+{}} {c:Tchar}} => (``, ()).1 -- if ((c =/= `%`_char(59,)) /\ (c =/= `%`_char(40,))) - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:64.5-64.18 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:64.5-64.18 prod{`` : ()} ``:Tblockcomment => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Teof : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : text} ``:"" => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinechar : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : char, c : char} ``:c:Tchar => (``, ()).1 -- if ((c!`%`_char.0 =/= 10) /\ (c!`%`_char.0 =/= 13)) -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tnewline : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0A => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x0D => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{0x0D} {0x0A}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tlinecomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:{{";;"} {Tlinechar*{}} (Tnewline | Teof)} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tcomment : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tlinecomment => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tblockcomment => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec grammar Tformat : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : ()} ``:Tnewline => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec prod{`` : nat} ``:0x09 => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec rec { -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:32.1-33.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:32.1-33.41 grammar Tspace : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:33.5-33.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:33.5-33.41 prod{`` : ()} [``]:({" "} | Tformat | Tcomment | Tannot)*{} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:69.1-70.41 +;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:69.1-70.41 grammar Tannot : () - ;; ../../../../specification/wasm-3.0/6.0-text.lexical.spectec:70.5-70.41 + ;; ../../../../specification/wasm-latest/6.0-text.lexical.spectec:70.5-70.41 prod{`` : ()} ``:{{"(@"} Tannotid {(Tspace | Ttoken)*{}} {")"}} => (``, ()).1 } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tsign : int - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod eps => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "+" => + (1 : nat <:> int) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "-" => - (1 : nat <:> int) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:18.1-20.40 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:18.1-20.40 grammar Tnum : nat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:19.5-19.18 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:19.5-19.18 prod{d : nat} d:Tdigit => d - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:20.5-20.40 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:20.5-20.40 prod{n : n, d : nat} {{n:Tnum} {"_"?{}} {d:Tdigit}} => ((10 * n) + d) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TuN(N : N) : uN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} n:Tnum => `%`_uN(n,) -- if (n < (2 ^ N)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"0x"} {n:Thexnum}} => `%`_uN(n,) -- if (n < (2 ^ N)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TsN(N : N) : sN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{s : int, n : n} {{s:Tsign} {`%`_uN(n,):TuN(N)}} => `%`_sN((s * (n : nat <:> int)),) -- if ((- ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int) <= (s * (n : nat <:> int))) /\ ((s * (n : nat <:> int)) < ((2 ^ (((N : nat <:> int) - (1 : nat <:> int)) : int <:> nat)) : nat <:> int))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TiN(N : N) : iN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} `%`_uN(n,):TuN(N) => `%`_iN(n,) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{i : sN(N)} i:TsN(N) => `%`_iN($inv_signed_(N, i!`%`_sN.0),) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:38.1-40.48 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:38.1-40.48 grammar Tfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:39.5-39.26 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:39.5-39.26 prod{d : nat} d:Tdigit => ((d : nat <:> rat) / (10 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:40.5-40.48 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:40.5-40.48 prod{d : nat, p : rat} {{d:Tdigit} {"_"?{}} {p:Tfrac}} => (((d + ((p / (10 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (10 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec rec { -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:42.1-44.54 +;; ../../../../specification/wasm-latest/6.1-text.values.spectec:42.1-44.54 grammar Thexfrac : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:43.5-43.29 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:43.5-43.29 prod{h : nat} h:Thexdigit => ((h : nat <:> rat) / (16 : nat <:> rat)) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec:44.5-44.54 + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec:44.5-44.54 prod{h : nat, p : rat} {{h:Thexdigit} {"_"?{}} {p:Thexfrac}} => (((h + ((p / (16 : nat <:> rat)) : rat <:> nat)) : nat <:> rat) / (16 : nat <:> rat)) } -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Tnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Tnum} {"."} {q:Tfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexmant : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat} {{p:Thexnum} {"."?{}}} => (p : nat <:> rat) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : nat, q : rat} {{p:Thexnum} {"."} {q:Thexfrac}} => ((p + (q : rat <:> nat)) : nat <:> rat) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{p:Tmant} ({"E"} | {"e"}) {s:Tsign} {ee:Tnum}} => (p * ((10 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Thexfloat : rat - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{p : rat, s : int, ee : nat} {{"0x"} {p:Thexmant} ({"P"} | {"p"}) {s:Tsign} {ee:Tnum}} => (p * ((2 ^ ((s * (ee : nat <:> int)) : int <:> nat)) : nat <:> rat)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfNmag(N : N) : fNmag(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Tfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : rat} q:Thexfloat => $ieee_(N, q) -- if ($ieee_(N, q) =/= INF_fNmag) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "inf" => INF_fNmag - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod "nan" => NAN_fNmag($canon_(N),) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{n : n} {{"nan:0x"} {n:Thexnum}} => NAN_fNmag(n,) -- if ((1 <= n) /\ (n < (2 ^ $signif(N)))) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar TfN(N : N) : fN(N) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{+ (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => POS_fN(q) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{q : fNmag(N)} {{- (1 : nat <:> int):Tsign} {q:TfNmag(N)}} => NEG_fN(q) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(8)} ``:TuN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(32)} ``:TuN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tu64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : uN(64)} ``:TuN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti8 : u8 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(8)} ``:TiN(8) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti16 : u16 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(16)} ``:TiN(16) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti32 : u32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(32)} ``:TiN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ti64 : u64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : iN(64)} ``:TiN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf32 : f32 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(32)} ``:TfN(32) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tf64 : f64 - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : fN(64)} ``:TfN(64) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlist(syntax el, grammar TX : el) : el* - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`el*` : el*} el:TX*{el <- `el*`} => el*{el <- `el*`} -- if (|el*{el <- `el*`}| < (2 ^ 32)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tidx_(ids : name?*) : idx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} x:Tu32 => x - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx, id : name} id:Tid => x -- if (ids[x!`%`_idx.0] = ?(id)) -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttypeidx_(I : I) : typeidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TYPES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttagidx_(I : I) : tagidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TAGS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tglobalidx_(I : I) : globalidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.GLOBALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tmemidx_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.MEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Ttableidx_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.TABLES_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfuncidx_(I : I) : funcidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FUNCS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tdataidx_(I : I) : dataidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.DATAS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Telemidx_(I : I) : elemidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.ELEMS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlocalidx_(I : I) : localidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LOCALS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tlabelidx_(I : I) : labelidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.LABELS_I) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Tfieldidx__(I : I, x : idx) : fieldidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{`` : idx} ``:Tidx_(I.FIELDS_I[x!`%`_idx.0]) => `` -;; ../../../../specification/wasm-3.0/6.1-text.values.spectec +;; ../../../../specification/wasm-latest/6.1-text.values.spectec grammar Texternidx_(I : I) : externidx - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"tag"} {x:Ttagidx_(I)} {")"}} => TAG_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"global"} {x:Tglobalidx_(I)} {")"}} => GLOBAL_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => MEM_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => TABLE_externidx(x) - ;; ../../../../specification/wasm-3.0/6.1-text.values.spectec + ;; ../../../../specification/wasm-latest/6.1-text.values.spectec prod{x : idx} {{"("} {"func"} {x:Tfuncidx_(I)} {")"}} => FUNC_externidx(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnumtype : numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f32" => F32_numtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "f64" => F64_numtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvectype : vectype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "v128" => V128_vectype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tabsheaptype : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "any" => ANY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "eq" => EQ_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i31" => I31_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "struct" => STRUCT_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "array" => ARRAY_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "none" => NONE_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "func" => FUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "nofunc" => NOFUNC_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "exn" => EXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noexn" => NOEXN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "extern" => EXTERN_heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "noextern" => NOEXTERN_heaptype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Theaptype_(I : I) : heaptype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ht : heaptype} ht:Tabsheaptype => ht - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx} x:Ttypeidx_(I) => _IDX_heaptype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tnull : null - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "null" => NULL_null -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Treftype_(I : I) : reftype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`null?` : null?, ht : heaptype} {{"("} {"ref"} {null?{null <- `null?`}:Tnull?{}} {ht:Theaptype_(I)} {")"}} => REF_reftype(null?{null <- `null?`}, ht) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tvaltype_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{nt : numtype} nt:Tnumtype => (nt : numtype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{vt : vectype} vt:Tvectype => (vt : vectype <: valtype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{rt : reftype} rt:Treftype_(I) => (rt : reftype <: valtype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tpacktype : packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i8" => I8_packtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i16" => I16_packtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tstoragetype_(I : I) : storagetype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => (t : valtype <: storagetype) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{pt : packtype} pt:Tpacktype => (pt : packtype <: storagetype) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfieldtype_(I : I) : fieldtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} zt:Tstoragetype_(I) => `%%`_fieldtype(?(), zt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{zt : storagetype} {{"("} {"mut"} {zt:Tstoragetype_(I)} {")"}} => `%%`_fieldtype(?(MUT_mut), zt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfield_(I : I) : (fieldtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype, `id?` : char?} {{"("} {"field"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {ft:Tfieldtype_(I)} {")"}} => (ft, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tparam_(I : I) : (valtype, name?) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype, `id?` : char?} {{"("} {"param"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => (t, ?(`%`_name(lift(id?{id <- `id?`}),))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tresult_(I : I) : valtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"result"} {t:Tvaltype_(I)} {")"}} => t -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tcomptype_(I : I) : (comptype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`ft*` : fieldtype*, `id?*` : char?*} {{"("} {"struct"} {(ft, ?(`%`_name(lift(id?{id <- `id?`}),)))*{ft <- `ft*`, `id?` <- `id?*`}:Tlist(syntax (fieldtype, name?), grammar Tfield_(I))} {")"}} => (STRUCT_comptype(`%`_list(ft*{ft <- `ft*`},)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{ft : fieldtype} {{"("} {"array"} {ft:Tfieldtype_(I)} {")"}} => (ARRAY_comptype(ft), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [[?(`%`_name([],))]], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tfinal : final - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "final" => FINAL_final -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tsubtype_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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') -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypedef_(I : I) : (subtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{st : subtype, I' : I, `id?` : char?} {{"("} {"type"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(st, I'):Tsubtype_(I)} {")"}} => (st, I' +++ {TYPES [?(`%`_name(lift(id?{id <- `id?`}),))], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Trectype_(I : I) : (rectype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{`st*` : subtype*, `I'*` : I*} {{"("} {"rec"} {(st, I')*{I' <- `I'*`, st <- `st*`}:Tlist(syntax (subtype, idctxt), grammar Ttypedef_(I))} {")"}} => (REC_rectype(`%`_list(st*{st <- `st*`},)), $concat_idctxt(I'*{I' <- `I'*`})) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Taddrtype : addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i32" => I32_addrtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod "i64" => I64_addrtype -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tlimits : limits - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n} `%`_u64(n,):Tu64 => `[%..%]`_limits(`%`_u64(n,), ?()) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{n : n, m : m} {{`%`_u64(n,):Tu64} {`%`_u64(m,):Tu64}} => `[%..%]`_limits(`%`_u64(n,), ?(`%`_u64(m,))) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttypeuse_(I : I) : (typeidx, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))^|t_1*{t_1 <- `t_1*`}|{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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 (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name(lift(id?{id <- `id?`}),))*{`id?` <- `id?*`}, LABELS [], FIELDS [], TYPEDEFS []}) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttagtype_(I : I) : tagtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_tagtype(x) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tglobaltype_(I : I) : globaltype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} t:Tvaltype_(I) => `%%`_globaltype(?(), t) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{t : valtype} {{"("} {"mut"} {t:Tvaltype_(I)} {")"}} => `%%`_globaltype(?(MUT_mut), t) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Tmemtype_(I : I) : memtype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits} {{at:Taddrtype} {lim:Tlimits}} => `%%PAGE`_memtype(at, lim) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Ttabletype_(I : I) : tabletype - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{at : addrtype, lim : limits, rt : reftype} {{at:Taddrtype} {lim:Tlimits} {rt:Treftype_(I)}} => `%%%`_tabletype(at, lim, rt) -;; ../../../../specification/wasm-3.0/6.2-text.types.spectec +;; ../../../../specification/wasm-latest/6.2-text.types.spectec grammar Texterntype_(I : I) : (externtype, idctxt) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{jt : tagtype, `id?` : char?} {{"("} {"tag"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {jt:Ttagtype_(I)} {")"}} => (TAG_externtype(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{gt : globaltype, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {")"}} => (GLOBAL_externtype(gt), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../specification/wasm-latest/6.2-text.types.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEM_externtype(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.2-text.types.spectec + ;; ../../../../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-3.0/6.2-text.types.spectec + ;; ../../../../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 []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlabel_(I : I) : (name?, I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => (?(), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []} +++ I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I) -- if ~ (?(id) <- I.LABELS_I) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{id : name, x : idx} id:Tid => (?(id), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [?(id)], FIELDS [], TYPEDEFS []} +++ I[LABELS_I[x!`%`_idx.0] = ?()]) -- if (?(id) = I.LABELS_I[x!`%`_idx.0]) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tblocktype_(I : I) : blocktype - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t?` : valtype?} t?{t <- `t?`}:Tresult_(I)?{} => _RESULT_blocktype(t?{t <- `t?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, I' : I} (x, I'):Ttypeuse_(I) => _IDX_blocktype(x) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tcatch_(I : I) : catch - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, l : labelidx} {{"("} {"catch_ref"} {x:Ttagidx_(I)} {l:Tlabelidx_(I)} {")"}} => CATCH_REF_catch(x, l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_catch(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"("} {"catch_all_ref"} {l:Tlabelidx_(I)} {")"}} => CATCH_ALL_REF_catch(l) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tfoldedinstr_(I : I) : instr* -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tlaneidx : laneidx - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : u8} i:Tu8 => i -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Talign_(N : N) : u32 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{"align="} {`%`_u64(m,):Tu64}} => `%`_u32(n,) -- if (m = (2 ^ n)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u32(N,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Toffset : u64 - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{m : m} {{"offset="} {`%`_u64(m,):Tu64}} => `%`_u64(m,) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod eps => `%`_u64(0,) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tmemarg_(N : N) : memarg - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{n : n, m : m} {{`%`_u64(m,):Toffset} {`%`_u32(n,):Talign_(N)}} => {ALIGN `%`_u32(n,), OFFSET `%`_u64(m,)} -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Tplaininstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "unreachable" => UNREACHABLE_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "nop" => NOP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "drop" => DROP_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`t*?` : valtype*?} {{"select"} {t*{t <- `t*`}:Tresult_(I)*{}?{`t*` <- `t*?`}}} => SELECT_instr(t*{t <- `t*`}?{`t*` <- `t*?`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br"} {l:Tlabelidx_(I)}} => BR_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_if"} {l:Tlabelidx_(I)}} => BR_IF_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`l*` : labelidx*, l' : labelidx} {{"br_table"} {l*{l <- `l*`}:Tlabelidx_(I)*{}} {l':Tlabelidx_(I)}} => BR_TABLE_instr(l*{l <- `l*`}, l') - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_null"} {l:Tlabelidx_(I)}} => BR_ON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx} {{"br_on_non_null"} {l:Tlabelidx_(I)}} => BR_ON_NON_NULL_instr(l) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{l : labelidx, rt_1 : reftype, rt_2 : reftype} {{"br_on_cast"} {l:Tlabelidx_(I)} {rt_1:Treftype_(I)} {rt_2:Treftype_(I)}} => BR_ON_CAST_instr(l, rt_1, rt_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call"} {x:Tfuncidx_(I)}} => CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"call_ref"} {x:Ttypeidx_(I)}} => CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "return" => RETURN_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call"} {x:Tfuncidx_(I)}} => RETURN_CALL_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"return_call_ref"} {x:Ttypeidx_(I)}} => RETURN_CALL_REF_instr(_IDX_typeuse(x)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx, I' : I} {{"return_call_indirect"} {x:Ttableidx_(I)} {(y, I'):Ttypeuse_(I)}} => RETURN_CALL_INDIRECT_instr(x, _IDX_typeuse(y)) -- if (I' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS ?(`%`_name([],))*{}, LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"throw"} {x:Ttagidx_(I)}} => THROW_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "throw_ref" => THROW_REF_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.get"} {x:Tlocalidx_(I)}} => `LOCAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.set"} {x:Tlocalidx_(I)}} => `LOCAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"local.tee"} {x:Tlocalidx_(I)}} => `LOCAL.TEE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.get"} {x:Tglobalidx_(I)}} => `GLOBAL.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"global.set"} {x:Tglobalidx_(I)}} => `GLOBAL.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.get"} {x:Ttableidx_(I)}} => `TABLE.GET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.set"} {x:Ttableidx_(I)}} => `TABLE.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.size"} {x:Ttableidx_(I)}} => `TABLE.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.grow"} {x:Ttableidx_(I)}} => `TABLE.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"table.fill"} {x:Ttableidx_(I)}} => `TABLE.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"table.copy"} {x_1:Ttableidx_(I)} {x_2:Ttableidx_(I)}} => `TABLE.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"table.init"} {x:Ttableidx_(I)} {y:Telemidx_(I)}} => `TABLE.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"elem.drop"} {x:Telemidx_(I)}} => `ELEM.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => LOAD_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I32_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load16_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(16,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.load32_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => LOAD_instr(I64_numtype, ?(`%_%`_loadop_(`%`_sz(32,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VLOAD_instr(V128_vectype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8x8_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(8,), `%`_M(8,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16x4_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(16,), `%`_M(4,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_s"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), S_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32x2_u"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(`SHAPE%X%_%`_vloadop_(`%`_sz(32,), `%`_M(2,), U_sx)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load8_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(8,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load16_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(16,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(32,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_splat"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(SPLAT_vloadop_(`%`_sz(64,))), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load32_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.load64_zero"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => VLOAD_instr(V128_vectype, ?(ZERO_vloadop_(`%`_sz(64,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.load64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VLOAD_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(I64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f32.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(F32_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"f64.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)}} => STORE_instr(F64_numtype, ?(), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i32.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I32_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store8"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(8,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store16"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(16,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"i64.store32"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)}} => STORE_instr(I64_numtype, ?(`%`_storeop_(`%`_sz(32,),)), x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg} {{"v128.store"} {x:Tmemidx_(I)} {ao:Tmemarg_(16)}} => VSTORE_instr(V128_vectype, x, ao) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store8_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(1)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(8,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store16_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(2)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(16,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store32_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(4)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(32,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, ao : memarg, i : laneidx} {{"v128.store64_lane"} {x:Tmemidx_(I)} {ao:Tmemarg_(8)} {i:Tlaneidx}} => VSTORE_LANE_instr(V128_vectype, `%`_sz(64,), x, ao, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.size"} {x:Tmemidx_(I)}} => `MEMORY.SIZE`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.grow"} {x:Tmemidx_(I)}} => `MEMORY.GROW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"memory.fill"} {x:Tmemidx_(I)}} => `MEMORY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"memory.copy"} {x_1:Tmemidx_(I)} {x_2:Tmemidx_(I)}} => `MEMORY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"memory.init"} {x:Tmemidx_(I)} {y:Tdataidx_(I)}} => `MEMORY.INIT`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"data.drop"} {x:Tdataidx_(I)}} => `DATA.DROP`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{ht : heaptype} {{"ref.null"} {ht:Theaptype_(I)}} => `REF.NULL`_instr(ht) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"ref.func"} {x:Tfuncidx_(I)}} => `REF.FUNC`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.is_null" => `REF.IS_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.as_non_null" => `REF.AS_NON_NULL`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.eq" => `REF.EQ`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.test"} {rt:Treftype_(I)}} => `REF.TEST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{rt : reftype} {{"ref.cast"} {rt:Treftype_(I)}} => `REF.CAST`_instr(rt) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "ref.i31" => `REF.I31`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_s" => `I31.GET`_instr(S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i31.get_u" => `I31.GET`_instr(U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new"} {x:Ttypeidx_(I)}} => `STRUCT.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"struct.new_default"} {x:Ttypeidx_(I)}} => `STRUCT.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../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-3.0/6.3-text.instructions.spectec + ;; ../../../../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) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.get_u"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.GET`_instr(?(U_sx), x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, i : fieldidx} {{"struct.set"} {x:Ttypeidx_(I)} {i:Tfieldidx__(I, x)}} => `STRUCT.SET`_instr(x, i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new"} {x:Ttypeidx_(I)}} => `ARRAY.NEW`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.new_default"} {x:Ttypeidx_(I)}} => `ARRAY.NEW_DEFAULT`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, n : n} {{"array.new_fixed"} {x:Ttypeidx_(I)} {`%`_u32(n,):Tu32}} => `ARRAY.NEW_FIXED`_instr(x, `%`_u32(n,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.NEW_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.new_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.NEW_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_s"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(S_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.get_u"} {x:Ttypeidx_(I)}} => `ARRAY.GET`_instr(?(U_sx), x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.set"} {x:Ttypeidx_(I)}} => `ARRAY.SET`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "array.len" => `ARRAY.LEN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx} {{"array.fill"} {x:Ttypeidx_(I)}} => `ARRAY.FILL`_instr(x) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x_1 : idx, x_2 : idx} {{"array.copy"} {x_1:Ttypeidx_(I)} {x_2:Ttypeidx_(I)}} => `ARRAY.COPY`_instr(x_1, x_2) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_data"} {x:Ttypeidx_(I)} {y:Tdataidx_(I)}} => `ARRAY.INIT_DATA`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{x : idx, y : idx} {{"array.init_elem"} {x:Ttypeidx_(I)} {y:Telemidx_(I)}} => `ARRAY.INIT_ELEM`_instr(x, y) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "any.convert_extern" => `ANY.CONVERT_EXTERN`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "extern.convert_any" => `EXTERN.CONVERT_ANY`_instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u32} {{"i32.const"} {c:Ti32}} => CONST_instr(I32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : u64} {{"i64.const"} {c:Ti64}} => CONST_instr(I64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f32} {{"f32.const"} {c:Tf32}} => CONST_instr(F32_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{c : f64} {{"f64.const"} {c:Tf64}} => CONST_instr(F64_numtype, c) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eqz" => TESTOP_instr(I32_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eqz" => TESTOP_instr(I64_numtype, EQZ_testop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.eq" => RELOP_instr(I32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ne" => RELOP_instr(I32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_s" => RELOP_instr(I32_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.lt_u" => RELOP_instr(I32_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_s" => RELOP_instr(I32_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.gt_u" => RELOP_instr(I32_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_s" => RELOP_instr(I32_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.le_u" => RELOP_instr(I32_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_s" => RELOP_instr(I32_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ge_u" => RELOP_instr(I32_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.eq" => RELOP_instr(I64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ne" => RELOP_instr(I64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_s" => RELOP_instr(I64_numtype, LT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.lt_u" => RELOP_instr(I64_numtype, LT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_s" => RELOP_instr(I64_numtype, GT_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.gt_u" => RELOP_instr(I64_numtype, GT_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_s" => RELOP_instr(I64_numtype, LE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.le_u" => RELOP_instr(I64_numtype, LE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_s" => RELOP_instr(I64_numtype, GE_relop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ge_u" => RELOP_instr(I64_numtype, GE_relop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.eq" => RELOP_instr(F32_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ne" => RELOP_instr(F32_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.lt" => RELOP_instr(F32_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.gt" => RELOP_instr(F32_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.le" => RELOP_instr(F32_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ge" => RELOP_instr(F32_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.eq" => RELOP_instr(F64_numtype, EQ_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ne" => RELOP_instr(F64_numtype, NE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.lt" => RELOP_instr(F64_numtype, LT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.gt" => RELOP_instr(F64_numtype, GT_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.le" => RELOP_instr(F64_numtype, LE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ge" => RELOP_instr(F64_numtype, GE_relop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.clz" => UNOP_instr(I32_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.ctz" => UNOP_instr(I32_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.popcnt" => UNOP_instr(I32_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend8_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.extend16_s" => UNOP_instr(I32_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.clz" => UNOP_instr(I64_numtype, CLZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.ctz" => UNOP_instr(I64_numtype, CTZ_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.popcnt" => UNOP_instr(I64_numtype, POPCNT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend8_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(8,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend16_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(16,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend32_s" => UNOP_instr(I64_numtype, EXTEND_unop_(`%`_sz(32,),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.abs" => UNOP_instr(F32_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.neg" => UNOP_instr(F32_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sqrt" => UNOP_instr(F32_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.ceil" => UNOP_instr(F32_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.floor" => UNOP_instr(F32_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.trunc" => UNOP_instr(F32_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.nearest" => UNOP_instr(F32_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.abs" => UNOP_instr(F64_numtype, ABS_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.neg" => UNOP_instr(F64_numtype, NEG_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sqrt" => UNOP_instr(F64_numtype, SQRT_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.ceil" => UNOP_instr(F64_numtype, CEIL_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.floor" => UNOP_instr(F64_numtype, FLOOR_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.trunc" => UNOP_instr(F64_numtype, TRUNC_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.nearest" => UNOP_instr(F64_numtype, NEAREST_unop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.add" => BINOP_instr(I32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.sub" => BINOP_instr(I32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.mul" => BINOP_instr(I32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_s" => BINOP_instr(I32_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.div_u" => BINOP_instr(I32_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_s" => BINOP_instr(I32_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rem_u" => BINOP_instr(I32_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.and" => BINOP_instr(I32_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.or" => BINOP_instr(I32_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.xor" => BINOP_instr(I32_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shl" => BINOP_instr(I32_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_s" => BINOP_instr(I32_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.shr_u" => BINOP_instr(I32_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotl" => BINOP_instr(I32_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.rotr" => BINOP_instr(I32_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.add" => BINOP_instr(I64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.sub" => BINOP_instr(I64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.mul" => BINOP_instr(I64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_s" => BINOP_instr(I64_numtype, DIV_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.div_u" => BINOP_instr(I64_numtype, DIV_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_s" => BINOP_instr(I64_numtype, REM_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rem_u" => BINOP_instr(I64_numtype, REM_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.and" => BINOP_instr(I64_numtype, AND_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.or" => BINOP_instr(I64_numtype, OR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.xor" => BINOP_instr(I64_numtype, XOR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shl" => BINOP_instr(I64_numtype, SHL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_s" => BINOP_instr(I64_numtype, SHR_binop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.shr_u" => BINOP_instr(I64_numtype, SHR_binop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotl" => BINOP_instr(I64_numtype, ROTL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.rotr" => BINOP_instr(I64_numtype, ROTR_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.add" => BINOP_instr(F32_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.sub" => BINOP_instr(F32_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.mul" => BINOP_instr(F32_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.div" => BINOP_instr(F32_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.min" => BINOP_instr(F32_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.max" => BINOP_instr(F32_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.copysign" => BINOP_instr(F32_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.add" => BINOP_instr(F64_numtype, ADD_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.sub" => BINOP_instr(F64_numtype, SUB_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.mul" => BINOP_instr(F64_numtype, MUL_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.div" => BINOP_instr(F64_numtype, DIV_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.min" => BINOP_instr(F64_numtype, MIN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.max" => BINOP_instr(F64_numtype, MAX_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.copysign" => BINOP_instr(F64_numtype, COPYSIGN_binop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.wrap_i64" => CVTOP_instr(I32_numtype, I64_numtype, WRAP_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_s" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f32_u" => CVTOP_instr(I32_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_s" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.trunc_sat_f64_u" => CVTOP_instr(I32_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_s" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.extend_i32_u" => CVTOP_instr(I64_numtype, I32_numtype, EXTEND_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_s" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f32_u" => CVTOP_instr(I64_numtype, F32_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_s" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.trunc_sat_f64_u" => CVTOP_instr(I64_numtype, F64_numtype, TRUNC_SAT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.demote_f64" => CVTOP_instr(F32_numtype, F64_numtype, DEMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_s" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i32_u" => CVTOP_instr(F32_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_s" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.convert_i64_u" => CVTOP_instr(F32_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.promote_f32" => CVTOP_instr(F64_numtype, F32_numtype, PROMOTE_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_s" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i32_u" => CVTOP_instr(F64_numtype, I32_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_s" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.convert_i64_u" => CVTOP_instr(F64_numtype, I64_numtype, CONVERT_cvtop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32.reinterpret_f32" => CVTOP_instr(I32_numtype, F32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64.reinterpret_f64" => CVTOP_instr(I64_numtype, F64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32.reinterpret_i32" => CVTOP_instr(F32_numtype, I32_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64.reinterpret_i64" => CVTOP_instr(F64_numtype, I64_numtype, REINTERPRET_cvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.add128" => WIDEOP_instr(I64_numtype, ADD128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.sub128" => WIDEOP_instr(I64_numtype, SUB128_wideop_) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_s" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(S_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec + prod "i64.mul_wide_u" => EXTWIDEOP_instr(I64_numtype, MUL_WIDE_extwideop_(U_sx)) + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u8*} {{"v128.const"} {"i8x16"} {c*{c <- `c*`}:Ti8^16{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(8, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u16*} {{"v128.const"} {"i16x8"} {c*{c <- `c*`}:Ti16^8{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(16, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u32*} {{"v128.const"} {"i32x4"} {c*{c <- `c*`}:Ti32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : u64*} {{"v128.const"} {"i64x2"} {c*{c <- `c*`}:Ti64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $ibytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f32*} {{"v128.const"} {"f32x4"} {c*{c <- `c*`}:Tf32^4{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(32, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`c*` : f64*} {{"v128.const"} {"f64x2"} {c*{c <- `c*`}:Tf64^2{}}} => VCONST_instr(V128_vectype, $inv_ibytes_(128, $concat_(syntax byte, $fbytes_(64, c)*{c <- `c*`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`i*` : laneidx*} {{"i8x16.shuffle"} {i*{i <- `i*`}:Tlaneidx^16{}}} => VSHUFFLE_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), i*{i <- `i*`}) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_swizzle" => VSWIZZLOP_instr(`%`_bshape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_SWIZZLE_vswizzlop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.splat" => VSPLAT_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.splat" => VSPLAT_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.splat" => VSPLAT_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.splat" => VSPLAT_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.splat" => VSPLAT_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.splat" => VSPLAT_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_s"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(S_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.extract_lane_u"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ?(U_sx), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.extract_lane"} {i:Tlaneidx}} => VEXTRACT_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ?(), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i8x16.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i16x8.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"i64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f32x4.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{i : laneidx} {{"f64x2.replace_lane"} {i:Tlaneidx}} => VREPLACE_LANE_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), i) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.any_true" => VVTESTOP_instr(V128_vectype, ANY_TRUE_vvtestop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.all_true" => VTESTOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.all_true" => VTESTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.all_true" => VTESTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.all_true" => VTESTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ALL_TRUE_vtestop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.eq" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ne" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.lt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.gt_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.le_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_s" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.ge_u" => VRELOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.eq" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ne" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.lt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.gt_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.le_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_s" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.ge_u" => VRELOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.eq" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ne" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.lt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.gt_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GT_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.le_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), LE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_s" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.ge_u" => VRELOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), GE_vrelop_(U_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.eq" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ne" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.lt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.gt_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GT_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.le_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), LE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.ge_s" => VRELOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), GE_vrelop_(S_sx,)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.eq" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ne" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.lt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.gt" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.le" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ge" => VRELOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.eq" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), EQ_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ne" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.lt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.gt" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GT_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.le" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), LE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ge" => VRELOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), GE_vrelop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.not" => VVUNOP_instr(V128_vectype, NOT_vvunop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.abs" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.neg" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.popcnt" => VUNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), POPCNT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.abs" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.neg" => VUNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.abs" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.neg" => VUNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.abs" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.neg" => VUNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.abs" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.neg" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sqrt" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.ceil" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.floor" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.trunc" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.nearest" => VUNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.abs" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ABS_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.neg" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEG_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sqrt" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SQRT_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.ceil" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), CEIL_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.floor" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), FLOOR_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.trunc" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.nearest" => VUNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), NEAREST_vunop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.and" => VVBINOP_instr(V128_vectype, AND_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.andnot" => VVBINOP_instr(V128_vectype, ANDNOT_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.or" => VVBINOP_instr(V128_vectype, OR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.xor" => VVBINOP_instr(V128_vectype, XOR_vvbinop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.add_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.sub_sat_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.min_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_s" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.max_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.avgr_u" => VBINOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.add_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), ADD_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.sub_sat_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), SUB_SAT_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.mul" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.min_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.max_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.avgr_u" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), AVGRU_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.q15mulr_sat_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), Q15MULR_SATS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_q15mulr_s" => VBINOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_Q15MULRS_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.add" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.sub" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.mul" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.min_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MIN_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_s" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.max_u" => VBINOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), MAX_vbinop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.add" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.sub" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.mul" => VBINOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.add" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.sub" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.mul" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.div" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmin" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.pmax" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_min" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_max" => VBINOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.add" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), ADD_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.sub" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), SUB_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.mul" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MUL_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.div" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), DIV_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmin" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.pmax" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), PMAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_min" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MIN_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_max" => VBINOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MAX_vbinop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "v128.bitselect" => VVTERNOP_instr(V128_vectype, BITSELECT_vvternop) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I8_lanetype, `%`_dim(16,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.relaxed_laneselect" => VTERNOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), RELAXED_LANESELECT_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_madd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_MADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.relaxed_nmadd" => VTERNOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_NMADD_vternop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shl" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHL_vshiftop_) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_s" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.shr_u" => VSHIFTOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), SHR_vshiftop_(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.bitmask" => VBITMASK_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i8x16.narrow_i16x8_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_s" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), S_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.narrow_i32x4_u" => VNARROW_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), U_sx) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_low_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_s" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extend_high_i8x16_u" => VCVTOP_instr(`%X%`_shape(I16_lanetype, `%`_dim(8,)), `%X%`_shape(I8_lanetype, `%`_dim(16,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_low_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extend_high_i16x8_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(I16_lanetype, `%`_dim(8,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), TRUNC_SAT_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.trunc_sat_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), TRUNC_SAT_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_s" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(S_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f32x4_u" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), RELAXED_TRUNC_vcvtop__(U_sx, ?())) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_s_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(S_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_trunc_f64x2_u_zero" => VCVTOP_instr(`%X%`_shape(I32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), RELAXED_TRUNC_vcvtop__(U_sx, ?(ZERO_zero))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_s" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extend_high_i32x4_u" => VCVTOP_instr(`%X%`_shape(I64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), EXTEND_vcvtop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.demote_f64x2_zero" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(F64_lanetype, `%`_dim(2,)), DEMOTE_vcvtop__(ZERO_zero)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_s" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f32x4.convert_i32x4_u" => VCVTOP_instr(`%X%`_shape(F32_lanetype, `%`_dim(4,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.promote_low_f32x4" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(F32_lanetype, `%`_dim(4,)), PROMOTELOW_vcvtop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_s" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "f64x2.convert_low_i32x4_u" => VCVTOP_instr(`%X%`_shape(F64_lanetype, `%`_dim(2,)), `%X%`_shape(I32_lanetype, `%`_dim(4,)), CONVERT_vcvtop__(?(LOW_half), U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extadd_pairwise_i8x16_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_s" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extadd_pairwise_i16x8_u" => VEXTUNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTADD_PAIRWISE_vextunop__(U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_low_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.extmul_high_i8x16_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i16x8.relaxed_dot_i8x16_i7x16_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), `%`_ishape(`%X%`_shape(I8_lanetype, `%`_dim(16,)),), RELAXED_DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_low_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.extmul_high_i16x8_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.dot_i16x8_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), DOTS_vextbinop__) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_low_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(LOW_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_s" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, S_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i64x2.extmul_high_i32x4_u" => VEXTBINOP_instr(`%`_ishape(`%X%`_shape(I64_lanetype, `%`_dim(2,)),), `%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), EXTMUL_vextbinop__(HIGH_half, U_sx)) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod "i32x4.relaxed_dot_i8x16_i7x16_add_s" => VEXTTERNOP_instr(`%`_ishape(`%X%`_shape(I32_lanetype, `%`_dim(4,)),), `%`_ishape(`%X%`_shape(I16_lanetype, `%`_dim(8,)),), RELAXED_DOT_ADDS_vextternop__) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec rec { -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:15.1-17.29 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:15.1-17.29 grammar Tinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:16.5-16.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:16.5-16.29 prod{in : instr} in:Tplaininstr_(I) => in - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:17.5-17.29 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:17.5-17.29 prod{in : instr} in:Tblockinstr_(I) => in -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:23.1-24.52 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:23.1-24.52 grammar Tinstrs_(I : I) : instr* - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:20.5-20.27 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:20.5-20.27 prod{`in*` : instr*} in*{in <- `in*`}:Tinstr_(I)*{} => in*{in <- `in*`} - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:24.5-24.52 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:24.5-24.52 prod{`in**` : instr**} in*{in <- `in*`}*{`in*` <- `in**`}:Tfoldedinstr_(I)*{} => $concat_(syntax instr, in*{in <- `in*`}*{`in*` <- `in**`}) -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:88.1-90.65 +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:88.1-90.65 grammar Tblockinstr_(I : I) : instr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:63.5-67.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:63.5-67.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"block"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => BLOCK_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:68.5-72.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:68.5-72.35 prod{bt : blocktype, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"loop"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => LOOP_instr(bt, in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:73.5-79.71 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:73.5-79.71 prod{bt : blocktype, `in_1*` : instr*, `in_2*` : instr*, `id?` : char?, I' : I, `id_1?` : char?, `id_2?` : char?} {{"if"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {in_1*{in_1 <- `in_1*`}:Tinstrs_(I')} {"else"} {?(`%`_name(lift(id_1?{id_1 <- `id_1?`}),)):Tid?{}} {in_2*{in_2 <- `in_2*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id_2?{id_2 <- `id_2?`}),)):Tid?{}}} => `IF%%ELSE%`_instr(bt, in_1*{in_1 <- `in_1*`}, in_2*{in_2 <- `in_2*`}) -- if (((id_1?{id_1 <- `id_1?`} = ?()) \/ (id_1?{id_1 <- `id_1?`} = id?{id <- `id?`})) /\ ((id_2?{id_2 <- `id_2?`} = ?()) \/ (id_2?{id_2 <- `id_2?`} = id?{id <- `id?`}))) - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec:80.5-85.35 + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec:80.5-85.35 prod{bt : blocktype, `c*` : catch*, `in*` : instr*, `id?` : char?, I' : I, `id'?` : char?} {{"try_table"} {(?(`%`_name(lift(id?{id <- `id?`}),)), I'):Tlabel_(I)} {bt:Tblocktype_(I)} {c*{c <- `c*`}:Tcatch_(I)*{}} {in*{in <- `in*`}:Tinstrs_(I')} {"end"} {?(`%`_name(lift(id'?{id' <- `id'?`}),)):Tid?{}}} => TRY_TABLE_instr(bt, `%`_list(c*{c <- `c*`},), in*{in <- `in*`}) -- if ((id'?{id' <- `id'?`} = ?()) \/ (id'?{id' <- `id'?`} = id?{id <- `id?`})) } -;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec +;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec grammar Texpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.3-text.instructions.spectec + ;; ../../../../specification/wasm-latest/6.3-text.instructions.spectec prod{`in*` : instr*} in*{in <- `in*`}:Tinstrs_(I) => in*{in <- `in*`} -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttype_(I : I) : (type, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{qt : rectype, I' : I, I'' : I, n : n, `st*` : subtype*} (qt, I'):Trectype_(I) => (TYPE_type(qt), I' +++ I'') -- if (qt = REC_rectype(`%`_list(st^n{st <- `st*`},))) -- if (I'' = {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS ?(_DEF_deftype(qt, i))^(i (TAG_tag(jt), {TYPES [], TAGS [?(`%`_name(lift(id?{id <- `id?`}),))], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tglobal_(I : I) : (global, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{gt : globaltype, e : expr, `id?` : char?} {{"("} {"global"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {gt:Tglobaltype_(I)} {e:Texpr_(I)} {")"}} => (GLOBAL_global(gt, e), {TYPES [], TAGS [], GLOBALS [?(`%`_name(lift(id?{id <- `id?`}),))], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmem_(I : I) : (mem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{mt : memtype, `id?` : char?} {{"("} {"memory"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {mt:Tmemtype_(I)} {")"}} => (MEMORY_mem(mt), {TYPES [], TAGS [], GLOBALS [], MEMS [?(`%`_name(lift(id?{id <- `id?`}),))], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttable_(I : I) : (table, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{tt : tabletype, e : expr, `id?` : char?} {{"("} {"table"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {tt:Ttabletype_(I)} {e:Texpr_(I)} {")"}} => (TABLE_table(tt, e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [?(`%`_name(lift(id?{id <- `id?`}),))], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tlocal_(I : I) : (local*, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{t : valtype, `id?` : char?} {{"("} {"local"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {t:Tvaltype_(I)} {")"}} => ([LOCAL_local(t)], {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [?(`%`_name(lift(id?{id <- `id?`}),))], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tfunc_(I : I) : (func, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx, `loc**` : local**, e : expr, `id?` : char?, I_1 : I, `I_2*` : I*, I' : I} {{"("} {"func"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(x, I_1):Ttypeuse_(I)} {(loc*{loc <- `loc*`}, I_2):Tlocal_(I)*{I_2 <- `I_2*`, `loc*` <- `loc**`}} {e:Texpr_(I')} {")"}} => (FUNC_func(x, $concat_(syntax local, loc*{loc <- `loc*`}*{`loc*` <- `loc**`}), e), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [?(`%`_name(lift(id?{id <- `id?`}),))], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -- if (I' = I +++ I_1 +++ $concat_idctxt(I_2*{I_2 <- `I_2*`})) -- Idctxt_ok: `|-%:OK`(I',) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatastring : byte* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b**` : byte**} b*{b <- `b*`}*{`b*` <- `b**`}:Tstring*{} => $concat_(syntax byte, b*{b <- `b*`}*{`b*` <- `b**`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmemuse_(I : I) : memidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"memory"} {x:Tmemidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Toffsetexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"offset"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdata_(I : I) : (data, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, PASSIVE_datamode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`b*` : byte*, x : idx, e : expr, `id?` : char?} {{"("} {"data"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Tmemuse_(I)} {e:Toffsetexpr_(I)} {b*{b <- `b*`}:Tdatastring} {")"}} => (DATA_data(b*{b <- `b*`}, ACTIVE_datamode(x, e)), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [?(`%`_name(lift(id?{id <- `id?`}),))], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemexpr_(I : I) : expr - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{e : expr} {{"("} {"item"} {e:Texpr_(I)} {")"}} => e -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemlist_(I : I) : (reftype, expr*) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*} {{rt:Treftype_(I)} {e*{e <- `e*`}:Tlist(syntax expr, grammar Telemexpr_(I))}} => (rt, e*{e <- `e*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Ttableuse_(I : I) : tableidx - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"table"} {x:Ttableidx_(I)} {")"}} => x -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telem_(I : I) : (elem, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, PASSIVE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, x : idx, e' : expr, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {x:Ttableuse_(I)} {e':Toffsetexpr_(I)} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, ACTIVE_elemmode(x, e')), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{rt : reftype, `e*` : expr*, `id?` : char?} {{"("} {"elem"} {?(`%`_name(lift(id?{id <- `id?`}),)):Tid?{}} {"declare"} {(rt, e*{e <- `e*`}):Telemlist_(I)} {")"}} => (ELEM_elem(rt, e*{e <- `e*`}, DECLARE_elemmode), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [?(`%`_name(lift(id?{id <- `id?`}),))], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tstart_(I : I) : (start, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{x : idx} {{"("} {"start"} {x:Tfuncidx_(I)} {")"}} => (START_start(x), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timport_(I : I) : (import, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm_1 : name, nm_2 : name, xt : externtype, I' : I} {{"("} {"import"} {nm_1:Tname} {nm_2:Tname} {(xt, I'):Texterntype_(I)} {")"}} => (IMPORT_import(nm_1, nm_2, xt), I') -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texport_(I : I) : (export, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{nm : name, xx : externidx} {{"("} {"export"} {nm:Tname} {xx:Texternidx_(I)} {")"}} => (EXPORT_export(nm, xx), {TYPES [], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], FIELDS [], TYPEDEFS []}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"export"} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Timportdots : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{"("} {"import"} {Tname} {Tname} {")"}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttagdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttagtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttagtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobaldots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tglobaltype_(I)} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tglobaltype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmemdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Tmemtype_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {"("} {"data"} {Tdatastring} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Tmemtype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttabledots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttabletype_(I)} {Texpr_(I)?{}}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Taddrtype?{}} {Treftype_(I)} {"("} {"elem"} {Telemlist_(I)} {")"}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttabletype_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfuncdots_(I : I) : () - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} {Ttypeuse_(I)} {Tlocal_(I)*{}} {Texpr_(I)}} => (``, ()).1 - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : ()} ``:{{Texportdots*{}} Timportdots {Ttypeuse_(I)}} => (``, ()).1 -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttag_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportglobal_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportmem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texporttable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Texportfunc_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdatamem_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Telemtable_(I : I) : () -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecl_(I : I) : (decl, idctxt) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (type, idctxt)} ``:Ttype_(I) => (`` : (type, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (import, idctxt)} ``:Timport_(I) => (`` : (import, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (tag, idctxt)} ``:Ttag_(I) => (`` : (tag, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (global, idctxt)} ``:Tglobal_(I) => (`` : (global, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (mem, idctxt)} ``:Tmem_(I) => (`` : (mem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (table, idctxt)} ``:Ttable_(I) => (`` : (table, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (func, idctxt)} ``:Tfunc_(I) => (`` : (func, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (data, idctxt)} ``:Tdata_(I) => (`` : (data, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (elem, idctxt)} ``:Telem_(I) => (`` : (elem, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (start, idctxt)} ``:Tstart_(I) => (`` : (start, idctxt) <: (decl, idctxt)) - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (export, idctxt)} ``:Texport_(I) => (`` : (export, idctxt) <: (decl, idctxt)) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tmodule : module - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`type*` : type*, `import*` : import*, `tag*` : tag*, `global*` : global*, `mem*` : mem*, `table*` : table*, `func*` : func*, `data*` : data*, `elem*` : elem*, `start?` : start?, `export*` : export*, `I*` : I*, `decl*` : decl*, I' : I} {{"("} {"module"} {Tid?{}} {(decl, I)*{I <- `I*`, decl <- `decl*`}:Tdecl_(I')*{}} {")"}} => MODULE_module(`%`_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*`},)) -- if (I' = $concat_idctxt(I*{I <- `I*`})) -- Idctxt_ok: `|-%:OK`(I',) @@ -35922,50 +36149,50 @@ grammar Tmodule : module -- if (export*{export <- `export*`} = $exportsd(decl*{decl <- `decl*`})) -- if $ordered(decl*{decl <- `decl*`}) -;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec +;; ../../../../specification/wasm-latest/6.4-text.modules.spectec grammar Tdecldots_(I : I) : (decl, idctxt)* - ;; ../../../../specification/wasm-3.0/6.4-text.modules.spectec + ;; ../../../../specification/wasm-latest/6.4-text.modules.spectec prod{`` : (decl, idctxt)} [``]:Tdecl_(I)*{} => [``] -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsym : A - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod Bvar(syntax B) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod (Bvar(syntax symdots) | Bvar(syntax B)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec +;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec grammar Bsymsplit : () - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.4-notation.binary.spectec + ;; ../../../../specification/wasm-latest/X.4-notation.binary.spectec prod{`` : ()} ``:Bvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tvar(syntax X) : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod 0x00 => ((), ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsym : A - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod Tvar(syntax T) => $var(syntax A) - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod (Tvar(syntax symdots) | Tvar(syntax T)) => $var(syntax A) -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tsymsplit : () - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 - ;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec + ;; ../../../../specification/wasm-latest/X.5-notation.text.spectec prod{`` : ()} ``:Tvar(syntax B) => (``, ()).1 -;; ../../../../specification/wasm-3.0/X.5-notation.text.spectec +;; ../../../../specification/wasm-latest/X.5-notation.text.spectec grammar Tabbrev : () == IL Validation after pass sideconditions... diff --git a/spectec/test-splice/TEST.md b/spectec/test-splice/TEST.md index 55cc7d567c..15b63195f1 100644 --- a/spectec/test-splice/TEST.md +++ b/spectec/test-splice/TEST.md @@ -1,7 +1,7 @@ # Preview ```sh -$ (../src/exe-spectec/main.exe ../../../../specification/wasm-3.0/*.spectec -l --splice-latex -p spec-latex.in.tex -w) +$ (../src/exe-spectec/main.exe ../../../../specification/wasm-latest/*.spectec -l --splice-latex -p spec-latex.in.tex -w) == Parsing... == Elaboration... == IL Validation... @@ -70,6 +70,8 @@ $$ & & | & {\mathit{numtype}} {.} {{\mathit{testop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}} {.} {{\mathit{relop}}}_{{\mathit{numtype}}} \\ & & | & {\mathit{numtype}}_1 {.} {{{\mathit{cvtop}}}_{{\mathit{numtype}}_2, {\mathit{numtype}}_1}}{\mathsf{\_}}{{\mathit{numtype}}_2} \\ +& & | & {\mathit{numtype}} {.} {{\mathit{wideop}}}_{{\mathit{numtype}}} \\ +& & | & {\mathit{numtype}} {.} {{\mathit{extwideop}}}_{{\mathit{numtype}}} \\ & & | & \mathsf{local{.}get}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}set}~{\mathit{localidx}} \\ & & | & \mathsf{local{.}tee}~{\mathit{localidx}} \\ @@ -338,6 +340,7 @@ warning: syntax `export` was never spliced warning: syntax `exportinst` was never spliced warning: syntax `externaddr` was never spliced warning: syntax `externidx` was never spliced +warning: syntax `extwideop_` was never spliced warning: syntax `f32` was never spliced warning: syntax `f64` was never spliced warning: syntax `fN` was never spliced @@ -512,6 +515,7 @@ warning: syntax `vvbinop` was never spliced warning: syntax `vvternop` was never spliced warning: syntax `vvtestop` was never spliced warning: syntax `vvunop` was never spliced +warning: syntax `wideop_` was never spliced warning: syntax `zero` was never spliced warning: grammar `Babsheaptype` was never spliced warning: grammar `Bblocktype` was never spliced @@ -586,6 +590,7 @@ warning: grammar `Binstr/num-un-f64` was never spliced warning: grammar `Binstr/num-bin-f64` was never spliced warning: grammar `Binstr/num-cvt` was never spliced warning: grammar `Binstr/num-cvt-sat` was never spliced +warning: grammar `Binstr/num-wide` was never spliced warning: grammar `Binstr/vec-memory` was never spliced warning: grammar `Binstr/vec-const` was never spliced warning: grammar `Binstr/vec-shuffle` was never spliced @@ -847,6 +852,7 @@ warning: grammar `Tplaininstr_/num-cvt-i64` was never spliced warning: grammar `Tplaininstr_/num-cvt-f32` was never spliced warning: grammar `Tplaininstr_/num-cvt-f64` was never spliced warning: grammar `Tplaininstr_/num-cvt-reinterpret` was never spliced +warning: grammar `Tplaininstr_/num-wide` was never spliced warning: grammar `Tplaininstr_/vec-const` was never spliced warning: grammar `Tplaininstr_/vec-shuffle` was never spliced warning: grammar `Tplaininstr_/vec-splat` was never spliced @@ -1162,6 +1168,8 @@ warning: rule `Instr_ok/binop` was never spliced warning: rule `Instr_ok/testop` was never spliced warning: rule `Instr_ok/relop` was never spliced warning: rule `Instr_ok/cvtop` was never spliced +warning: rule `Instr_ok/wideop` was never spliced +warning: rule `Instr_ok/extwideop` was never spliced warning: rule `Instr_ok/vconst` was never spliced warning: rule `Instr_ok/vvunop` was never spliced warning: rule `Instr_ok/vvbinop` was never spliced @@ -1340,6 +1348,8 @@ warning: rule `Step_pure/testop` was never spliced warning: rule `Step_pure/relop` was never spliced warning: rule `Step_pure/cvtop-val` was never spliced warning: rule `Step_pure/cvtop-trap` was never spliced +warning: rule `Step_pure/wideop` was never spliced +warning: rule `Step_pure/extwideop` was never spliced warning: rule `Step_pure/vvunop` was never spliced warning: rule `Step_pure/vvbinop` was never spliced warning: rule `Step_pure/vvternop` was never spliced @@ -1601,6 +1611,7 @@ warning: definition `exninst` was never spliced warning: definition `expon` was never spliced warning: definition `exportsd` was never spliced warning: definition `extend__` was never spliced +warning: definition `extwideop__` was never spliced warning: definition `fabs_` was never spliced warning: definition `fadd_` was never spliced warning: definition `fbits_` was never spliced @@ -1727,6 +1738,7 @@ warning: definition `ibits_` was never spliced warning: definition `ibitselect_` was never spliced warning: definition `ibytes_` was never spliced warning: definition `iclz_` was never spliced +warning: definition `iconcat_` was never spliced warning: definition `ictz_` was never spliced warning: definition `idiv_` was never spliced warning: definition `ieee_` was never spliced @@ -1783,6 +1795,7 @@ warning: definition `is_packtype` was never spliced warning: definition `ishl_` was never spliced warning: definition `ishr_` was never spliced warning: definition `isize` was never spliced +warning: definition `isplit_` was never spliced warning: definition `isub_` was never spliced warning: definition `isub_sat_` was never spliced warning: definition `iswizzle_lane_` was never spliced @@ -1947,6 +1960,8 @@ warning: definition `vunpack` was never spliced warning: definition `vvbinop_` was never spliced warning: definition `vvternop_` was never spliced warning: definition `vvunop_` was never spliced +warning: definition `wideop_` was never spliced +warning: definition `wideop__` was never spliced warning: definition `with_array` was never spliced warning: definition `with_data` was never spliced warning: definition `with_elem` was never spliced @@ -2121,6 +2136,7 @@ warning: rule prose `Instr_ok/data.drop` was never spliced warning: rule prose `Instr_ok/drop` was never spliced warning: rule prose `Instr_ok/elem.drop` was never spliced warning: rule prose `Instr_ok/extern.convert_any` was never spliced +warning: rule prose `Instr_ok/extwideop` was never spliced warning: rule prose `Instr_ok/global.get` was never spliced warning: rule prose `Instr_ok/global.set` was never spliced warning: rule prose `Instr_ok/i31.get` was never spliced @@ -2204,6 +2220,7 @@ warning: rule prose `Instr_ok/vvbinop` was never spliced warning: rule prose `Instr_ok/vvternop` was never spliced warning: rule prose `Instr_ok/vvtestop` was never spliced warning: rule prose `Instr_ok/vvunop` was never spliced +warning: rule prose `Instr_ok/wideop` was never spliced warning: rule prose `Instr_ok2` was never spliced warning: rule prose `Instr_ok2/call_ref` was never spliced warning: rule prose `Instr_ok2/frame` was never spliced @@ -2312,6 +2329,7 @@ warning: rule prose `Step_pure/call_indirect` was never spliced warning: rule prose `Step_pure/cvtop` was never spliced warning: rule prose `Step_pure/drop` was never spliced warning: rule prose `Step_pure/extern.convert_any` was never spliced +warning: rule prose `Step_pure/extwideop` was never spliced warning: rule prose `Step_pure/frame` was never spliced warning: rule prose `Step_pure/handler` was never spliced warning: rule prose `Step_pure/i31.get` was never spliced @@ -2351,6 +2369,7 @@ warning: rule prose `Step_pure/vvbinop` was never spliced warning: rule prose `Step_pure/vvternop` was never spliced warning: rule prose `Step_pure/vvtestop` was never spliced warning: rule prose `Step_pure/vvunop` was never spliced +warning: rule prose `Step_pure/wideop` was never spliced warning: rule prose `Step_read/array.copy` was never spliced warning: rule prose `Step_read/array.fill` was never spliced warning: rule prose `Step_read/array.get` was never spliced @@ -2525,6 +2544,7 @@ warning: definition prose `evalglobals` was never spliced warning: definition prose `exninst` was never spliced warning: definition prose `expon` was never spliced warning: definition prose `exportsd` was never spliced +warning: definition prose `extwideop__` was never spliced warning: definition prose `fnat` was never spliced warning: definition prose `fof` was never spliced warning: definition prose `fone` was never spliced @@ -2617,6 +2637,7 @@ warning: definition prose `halfop` was never spliced warning: definition prose `iabs_` was never spliced warning: definition prose `iadd_` was never spliced warning: definition prose `iadd_sat_` was never spliced +warning: definition prose `iconcat_` was never spliced warning: definition prose `idiv_` was never spliced warning: definition prose `ieq_` was never spliced warning: definition prose `ieqz_` was never spliced @@ -2648,6 +2669,7 @@ warning: definition prose `irelaxed_swizzle_lane_` was never spliced warning: definition prose `irem_` was never spliced warning: definition prose `is_packtype` was never spliced warning: definition prose `isize` was never spliced +warning: definition prose `isplit_` was never spliced warning: definition prose `isub_` was never spliced warning: definition prose `isub_sat_` was never spliced warning: definition prose `iswizzle_lane_` was never spliced @@ -2801,6 +2823,8 @@ warning: definition prose `vunpack` was never spliced warning: definition prose `vvbinop_` was never spliced warning: definition prose `vvternop_` was never spliced warning: definition prose `vvunop_` was never spliced +warning: definition prose `wideop_` was never spliced +warning: definition prose `wideop__` was never spliced warning: definition prose `with_array` was never spliced warning: definition prose `with_data` was never spliced warning: definition prose `with_elem` was never spliced From c2de27d0039ee0431a974455e44a43bee5a4e11d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 10 Aug 2026 12:47:56 -0700 Subject: [PATCH 50/51] Restore README to what it is on `main` --- README.md | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 3308ccfce8..4dfd708d83 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,26 @@ -# Wide Arithmetic proposal for WebAssembly. +![Spectec Status](https://github.com/WebAssembly/spec/actions/workflows/ci-spectec.yml/badge.svg) +![Interpreter Status](https://github.com/WebAssembly/spec/actions/workflows/ci-interpreter.yml/badge.svg) +![Spec doc Status](https://github.com/WebAssembly/spec/actions/workflows/ci-spec.yml/badge.svg) -This repository is a clone of -[`WebAssembly/spec`](https://github.com/WebAssembly/spec/). It is meant for -discussion, prototype specification, and implementation of a proposal to add -support for wide arithmetic instructions for WebAssembly. This proposal is -currently [at phase 3 in the proposals process][phase]. +[![CI for specs](https://github.com/WebAssembly/spec/actions/workflows/ci-spec.yml/badge.svg)](https://github.com/WebAssembly/spec/actions/workflows/ci-spec.yml) +[![CI for interpreter & tests](https://github.com/WebAssembly/spec/actions/workflows/ci-interpreter.yml/badge.svg)](https://github.com/WebAssembly/spec/actions/workflows/ci-interpreter.yml) -[phase]: https://github.com/WebAssembly/proposals -* See the [overview](./proposals/wide-arithmetic/Overview.md) for a - high-level summary and rationale of the proposal. +# spec -* See the [modified spec](https://webassembly.github.io/wide-arithmetic/core/) - for the formalization of this proposal. Notably... - * [new abstract syntax](https://webassembly.github.io/wide-arithmetic/core/syntax/instructions.html#numeric-instructions) - * [new binary opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/binary/instructions.html#numeric-instructions) - * [new text opcodes (scroll down)](https://webassembly.github.io/wide-arithmetic/core/text/instructions.html#numeric-instructions) - * [new validation](https://webassembly.github.io/wide-arithmetic/core/valid/instructions.html#numeric-instructions) - * [new execution](https://webassembly.github.io/wide-arithmetic/core/exec/instructions.html#numeric-instructions) - * [new helper functions](https://webassembly.github.io/wide-arithmetic/core/exec/numerics.html#xref-exec-numerics-op-iconcat-mathrm-iconcat-m-n-i-1-i-2) +This repository holds the sources for the WebAssembly specification, +a reference implementation, and the official test suite. -* See the [diff from the upstream spec][diff] for a diff-style view of this - proposal. +A formatted version of the spec is available here: +[webassembly.github.io/spec](https://webassembly.github.io/spec/), - -[diff]: https://github.com/webassembly/wide-arithmetic/compare/e01ace5eb7c88ce58e444f1700c1bf4175e47e28...main +Participation is welcome. Discussions about new features, significant semantic +changes, or any specification change likely to generate substantial discussion +should take place in +[the WebAssembly design repository](https://github.com/WebAssembly/design) +first, so that this spec repository can remain focused. And please follow the +[guidelines for contributing](Contributing.md). + +# citing + +For citing WebAssembly in LaTeX, use [this bibtex file](wasm-specs.bib). From aa21c75aa2684ff7b7fff56376dd45673357d88f Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 10 Aug 2026 14:00:26 -0700 Subject: [PATCH 51/51] Use spectec for text syntax --- document/core/text/instructions.rst | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index 49de3b0ce4..63b9b3fbf7 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -299,14 +299,9 @@ $${grammar: { .. _text-wideop: -.. math:: - \begin{array}{llclll} - \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{thisisenough} && \phantom{thisshouldbeenough} \\[-2ex] &&|& - \text{i64.add128} &\Rightarrow& \I64.\ADD128 \\ &&|& - \text{i64.sub128} &\Rightarrow& \I64.\SUB128 \\ &&|& - \text{i64.mul\_wide\_s} &\Rightarrow& \I64.\MULWIDE\K{\_s} \\ &&|& - \text{i64.mul\_wide\_u} &\Rightarrow& \I64.\MULWIDE\K{\_u} \\ - \end{array} +$${grammar: { + Tplaininstr_/num-wide +}} .. index:: vector instruction